Session requests and types for fingerprint and user added.
This commit is contained in:
parent
49a1fd26e7
commit
894ba92016
@ -8,7 +8,7 @@ export default class ApiRequest
|
||||
protected method: RequestMethod;
|
||||
protected url: string;
|
||||
protected parameters: Record<string, any> = {};
|
||||
protected onSuccess: (responseText: string, status: number) => void;
|
||||
protected onSuccess: (responseText: string) => void;
|
||||
protected onError: (responseText: string, status: number) => void;
|
||||
|
||||
public constructor(url: string, method: RequestMethod)
|
||||
@ -31,7 +31,7 @@ export default class ApiRequest
|
||||
this.request.onreadystatechange = () => {
|
||||
if (this.request.readyState === 4) {
|
||||
if (this.request.status === 200) {
|
||||
this.onSuccess(this.request.responseText, this.request.status);
|
||||
this.onSuccess(this.request.responseText);
|
||||
} else {
|
||||
this.onError(this.request.responseText, this.request.status);
|
||||
}
|
||||
@ -42,7 +42,7 @@ export default class ApiRequest
|
||||
this.request.send(JSON.stringify(this.parameters));
|
||||
}
|
||||
|
||||
public setOnSuccess(callback: (responseText: string, status: number) => void): void
|
||||
public setOnSuccess(callback: (responseText: string) => void): void
|
||||
{
|
||||
this.onSuccess = callback;
|
||||
}
|
||||
|
19
js/api/FingerprintGetApiRequest.ts
Normal file
19
js/api/FingerprintGetApiRequest.ts
Normal file
@ -0,0 +1,19 @@
|
||||
import ApiRequest from "./ApiRequest.js";
|
||||
import RequestMethod from "./RequestMethod.js";
|
||||
import Fingerprint from "../types/Fingerprint.js";
|
||||
import FingerprintGetEvent from "../event/FingerprintGetEvent.js";
|
||||
|
||||
export default class FingerprintGetApiRequest extends ApiRequest
|
||||
{
|
||||
public constructor(fingerprintId: number) {
|
||||
super('fingerprint/' + fingerprintId, RequestMethod.GET);
|
||||
|
||||
this.onSuccess = (response: string): void => {
|
||||
let json = JSON.parse(response);
|
||||
|
||||
let fingerprint = new Fingerprint(json.result.fingerprintId, json.result.fingerprint, json.result.userId);
|
||||
|
||||
window.dispatchEvent(new FingerprintGetEvent(fingerprint));
|
||||
}
|
||||
}
|
||||
}
|
@ -1,10 +1,24 @@
|
||||
import ApiRequest from "./ApiRequest.js";
|
||||
import RequestMethod from "./RequestMethod.js";
|
||||
import UserGetEvent from "../event/UserGetEvent.js";
|
||||
import User from "../types/User.js";
|
||||
|
||||
export default class UserGetApiRequest extends ApiRequest
|
||||
{
|
||||
public constructor(userId: number)
|
||||
{
|
||||
super('user/' + userId, RequestMethod.GET);
|
||||
|
||||
this.onSuccess = (response: string) => {
|
||||
let json = JSON.parse(response);
|
||||
|
||||
let user = new User(json.result.userId);
|
||||
user.setUsername(json.result.username);
|
||||
user.setJabberAddress(json.result.jabberAddress);
|
||||
user.setAdmin(json.result.isAdmin);
|
||||
user.setFingerprintIds(json.result.fingerprintIds);
|
||||
|
||||
window.dispatchEvent(new UserGetEvent(user));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
20
js/api/UserLoginApiRequest.ts
Normal file
20
js/api/UserLoginApiRequest.ts
Normal file
@ -0,0 +1,20 @@
|
||||
import ApiRequest from "./ApiRequest.js";
|
||||
import RequestMethod from "./RequestMethod.js";
|
||||
import UserLoginSuccessEvent from "../event/UserLoginSuccessEvent.js";
|
||||
|
||||
export default class UserLoginApiRequest extends ApiRequest
|
||||
{
|
||||
public constructor(username: string, password: string)
|
||||
{
|
||||
super('user/session', RequestMethod.POST);
|
||||
|
||||
this.addParameter('username', username);
|
||||
this.addParameter('password', password);
|
||||
|
||||
this.onSuccess = (response: string) =>
|
||||
{
|
||||
let json = JSON.parse(response);
|
||||
window.dispatchEvent(new UserLoginSuccessEvent(json.userId));
|
||||
};
|
||||
}
|
||||
}
|
9
js/api/UserLogoutApiRequest.ts
Normal file
9
js/api/UserLogoutApiRequest.ts
Normal file
@ -0,0 +1,9 @@
|
||||
import ApiRequest from "./ApiRequest.js";
|
||||
import RequestMethod from "./RequestMethod.js";
|
||||
|
||||
export default class UserLogoutApiRequest extends ApiRequest
|
||||
{
|
||||
public constructor() {
|
||||
super('user/session', RequestMethod.DELETE);
|
||||
}
|
||||
}
|
20
js/event/FingerprintGetEvent.ts
Normal file
20
js/event/FingerprintGetEvent.ts
Normal file
@ -0,0 +1,20 @@
|
||||
import RingfingerEvent from "./RingfingerEvent.js";
|
||||
import Fingerprint from "../types/Fingerprint.js";
|
||||
|
||||
export default class FingerprintGetEvent extends RingfingerEvent
|
||||
{
|
||||
public static readonly NAME: string = 'fingerprintgetevent';
|
||||
|
||||
private fingerprint: Fingerprint;
|
||||
|
||||
public constructor(fingerprint: Fingerprint) {
|
||||
super(FingerprintGetEvent.NAME);
|
||||
|
||||
this.fingerprint = fingerprint;
|
||||
}
|
||||
|
||||
public getFingerprint(): Fingerprint
|
||||
{
|
||||
return this.fingerprint;
|
||||
}
|
||||
}
|
4
js/event/RingfingerEvent.ts
Normal file
4
js/event/RingfingerEvent.ts
Normal file
@ -0,0 +1,4 @@
|
||||
export default class RingfingerEvent extends Event
|
||||
{
|
||||
public static readonly NAME: string;
|
||||
}
|
21
js/event/UserGetEvent.ts
Normal file
21
js/event/UserGetEvent.ts
Normal file
@ -0,0 +1,21 @@
|
||||
import RingfingerEvent from "./RingfingerEvent.js";
|
||||
import User from "../types/User.js";
|
||||
|
||||
export default class UserGetEvent extends RingfingerEvent
|
||||
{
|
||||
public static readonly NAME: string = 'usergetevent';
|
||||
|
||||
private user: User;
|
||||
|
||||
public constructor(user: User)
|
||||
{
|
||||
super(UserGetEvent.NAME);
|
||||
|
||||
this.user = user;
|
||||
}
|
||||
|
||||
public getUser(): User
|
||||
{
|
||||
return this.user;
|
||||
}
|
||||
}
|
19
js/event/UserLoginSuccessEvent.ts
Normal file
19
js/event/UserLoginSuccessEvent.ts
Normal file
@ -0,0 +1,19 @@
|
||||
import RingfingerEvent from "./RingfingerEvent.js";
|
||||
|
||||
export default class UserLoginSuccessEvent extends RingfingerEvent
|
||||
{
|
||||
public static readonly NAME: string = 'userloginsuccessevent';
|
||||
|
||||
private userId: number;
|
||||
|
||||
public constructor(userId: number) {
|
||||
super(UserLoginSuccessEvent.NAME);
|
||||
|
||||
this.userId = userId;
|
||||
}
|
||||
|
||||
public getUserId(): number
|
||||
{
|
||||
return this.userId;
|
||||
}
|
||||
}
|
49
js/types/Fingerprint.ts
Normal file
49
js/types/Fingerprint.ts
Normal file
@ -0,0 +1,49 @@
|
||||
export default class Fingerprint
|
||||
{
|
||||
private static readonly CHARS_ALLOWED: string = '1234567890abcdef';
|
||||
|
||||
private readonly fingerprintId: number;
|
||||
private readonly fingerprint: string;
|
||||
private readonly userId: number;
|
||||
|
||||
public constructor(fingerprintId: number, fingerprint: string, userId: number)
|
||||
{
|
||||
if (!Fingerprint.validateFingerprint(fingerprint)) {
|
||||
throw new Error(fingerprint + ' is not a valid fingerprint!');
|
||||
}
|
||||
|
||||
this.fingerprintId = fingerprintId;
|
||||
this.fingerprint = fingerprint;
|
||||
this.userId = userId;
|
||||
}
|
||||
|
||||
public getFingerprint(): string
|
||||
{
|
||||
return this.fingerprint;
|
||||
}
|
||||
|
||||
public getUserId(): number
|
||||
{
|
||||
return this.userId;
|
||||
}
|
||||
|
||||
public getFingerprintId(): number
|
||||
{
|
||||
return this.fingerprintId;
|
||||
}
|
||||
|
||||
private static validateFingerprint(fingerprint: string): boolean
|
||||
{
|
||||
if (fingerprint.length !== 64) {
|
||||
return false;
|
||||
}
|
||||
|
||||
for (let i: number = 0; i < fingerprint.length; ++i) {
|
||||
if (Fingerprint.CHARS_ALLOWED.indexOf(fingerprint[i]) === -1) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
53
js/types/User.ts
Normal file
53
js/types/User.ts
Normal file
@ -0,0 +1,53 @@
|
||||
export default class User
|
||||
{
|
||||
private userId: number;
|
||||
private username: string = '';
|
||||
private jabberAddress: string = '';
|
||||
private admin: boolean = false;
|
||||
private fingerprintIds: Array<number> = [];
|
||||
|
||||
public constructor(userId: number)
|
||||
{
|
||||
this.userId = userId;
|
||||
}
|
||||
|
||||
public setUsername(username: string): void
|
||||
{
|
||||
this.username = username;
|
||||
}
|
||||
|
||||
public getUsername(): string
|
||||
{
|
||||
return this.username;
|
||||
}
|
||||
|
||||
public setJabberAddress(jabberAddress: string): void
|
||||
{
|
||||
this.jabberAddress = jabberAddress;
|
||||
}
|
||||
|
||||
public getJabberAddress(): string
|
||||
{
|
||||
return this.jabberAddress;
|
||||
}
|
||||
|
||||
public setAdmin(isAdmin: boolean): void
|
||||
{
|
||||
this.admin = isAdmin;
|
||||
}
|
||||
|
||||
public isAdmin(): boolean
|
||||
{
|
||||
return this.admin;
|
||||
}
|
||||
|
||||
public setFingerprintIds(fingerprintIds: Array<number>)
|
||||
{
|
||||
this.fingerprintIds = fingerprintIds;
|
||||
}
|
||||
|
||||
public getFingerprintIds(): Array<number>
|
||||
{
|
||||
return this.fingerprintIds;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user