jsOMS/Auth/Auth.js
Dennis Eichhorn 7b75ec58f7
Some checks failed
CodeQL / Analyze (javascript) (push) Has been cancelled
CI / general_module_workflow_js (push) Has been cancelled
fix permissions
2025-04-02 14:15:07 +00:00

110 lines
1.9 KiB
JavaScript

import { Request } from '../Message/Request/Request.js';
import { RequestMethod } from '../Message/Request/RequestMethod.js';
import { RequestType } from '../Message/Request/RequestType.js';
/**
* @typedef {import('../Account/Account.js').Account} Account
*/
/**
* Auth class.
*
* @copyright Dennis Eichhorn
* @license OMS License 2.2
* @version 1.0.0
* @since 1.0.0
*/
export class Auth
{
/**
* @constructor
*
* @param {string} uri Login uri
*
* @since 1.0.0
*/
constructor (uri)
{
/** @type {Account} account */
this.account = null;
/** @type {string} uri */
this.uri = uri;
};
/**
* Set account for authentication.
*
* @param {Account} account Account
*
* @since 1.0.0
*/
setAccount (account)
{
this.account = account;
};
/**
* Get account.
*
* @return {Account}
*
* @since 1.0.0
*/
getAccount ()
{
return this.account;
};
/**
* Login account.
*
* @return {void}
*
* @since 1.0.0
*/
login ()
{
const authRequest = new Request();
authRequest.setUri(this.uri);
authRequest.setMethod(RequestMethod.POST);
authRequest.setResponseType(RequestType.JSON);
authRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
/** @type {XMLHttpRequest} xhr */
authRequest.setSuccess(function (xhr)
{
this.loginResult(xhr);
});
authRequest.send();
};
/**
* Logout account.
*
* @return {void}
*
* @since 1.0.0
*/
logout ()
{
location.reload();
};
/**
* Handle login result.
*
* @param {XMLHttpRequest} xhr Request
*
* @return {void}
*
* @since 1.0.0
*/
loginResult (xhr)
{
location.reload();
};
};