keycloak-demo-frontend/src/models/Redux/User/index.ts

81 lines
1.7 KiB
TypeScript

import Immerable from '@Models/GeneralImmer';
import cloneDeep from 'lodash/cloneDeep';
import { UserAccountInfo, UserOAuthUrl, UserSignOutUrl } from './types';
class User extends Immerable {
public userIsLogin: boolean;
public userAuthCheck: boolean;
public userAccount: UserAccountInfo;
public userToken: string;
public userOAuth: UserOAuthUrl;
public userSignOutUrl: UserSignOutUrl;
public constructor() {
super();
this.userIsLogin = false;
this.userAuthCheck = false;
this.userAccount = {
display_name: '',
email: '',
groups: [],
username: '',
};
this.userToken = '';
this.userOAuth = {
url: '',
};
this.userSignOutUrl = {
url: '',
};
}
public initialize(): void {
this.userIsLogin = false;
this.userAuthCheck = false;
this.userAccount = {
display_name: '',
email: '',
groups: [],
username: '',
};
this.userToken = '';
this.userOAuth = {
url: '',
};
this.userSignOutUrl = {
url: '',
};
}
public updateUserLoginState(newUserLoginState: boolean): void {
this.userIsLogin = newUserLoginState;
}
public updateUserAuthCheck(newUserAuthCheck: boolean): void {
this.userAuthCheck = newUserAuthCheck;
}
public updateUserToken(newUserToken: string): void {
this.userToken = cloneDeep(newUserToken);
}
public updateUserAccountInFo(newUserAccount: UserAccountInfo): void {
this.userAccount = cloneDeep(newUserAccount);
}
public updateUserOAuthUrl(newUserOAuth: UserOAuthUrl): void {
this.userOAuth = cloneDeep(newUserOAuth);
}
public updateUserSignOutUrl(newSignOutUrl: UserSignOutUrl): void {
this.userSignOutUrl = cloneDeep(newSignOutUrl);
}
}
export default User;