UNPKG

create-bar-project

Version:

This module helps create a base for web application projects.

63 lines (54 loc) 1.96 kB
import API from 'Api'; import { alertMessage, alertStrings, hideAfterTimeSec } from 'Common/AlertMessage'; import { LoginFormValues, RegisterFormValues } from 'Common/FormValuesTypes'; import { User } from 'Common/Models'; import { removeToken, saveToken } from 'Common/Utils/Cookies'; import { action, computed, observable } from 'mobx'; import { GenericStore } from 'Logic/Stores'; export default class AuthStore { @observable private currentUser?: User; private genericStore: GenericStore; constructor(genericStore: GenericStore) { this.genericStore = genericStore; } @computed public get getCurrentUser(): User | undefined { return this.currentUser; } @action public async logIn(loginData: LoginFormValues): Promise<void> { try { const { token, ...rest } = (await API.post('/auth/login', loginData)) as any; saveToken(token); this.currentUser = { ...rest }; await this.genericStore?.fetch('Role'); alertMessage.success(alertStrings.logInSuccess, { hideAfter: hideAfterTimeSec }); } catch (err) { alertMessage.error(err.message, { hideAfter: hideAfterTimeSec }); } } @action public logout(): void { this.currentUser = undefined; removeToken(); alertMessage.success(alertStrings.logOutSuccess, { hideAfter: hideAfterTimeSec }); } @action public async register(registerData: RegisterFormValues): Promise<void> { try { const { token, ...rest } = (await API.post('/auth/register', registerData)) as any; saveToken(token); this.currentUser = { ...rest }; await this.genericStore?.fetch('Role'); alertMessage.success(alertStrings.logInSuccess, { hideAfter: hideAfterTimeSec }); } catch (err) { alertMessage.error(err.message, { hideAfter: hideAfterTimeSec }); } } @action public async fetchCurrentUser(): Promise<User | undefined> { this.currentUser = await API.post('/auth/login'); return this.currentUser; } }