diff options
| author | ivarlovlie <git@ivarlovlie.no> | 2022-12-13 14:48:11 +0100 |
|---|---|---|
| committer | ivarlovlie <git@ivarlovlie.no> | 2022-12-13 14:48:21 +0100 |
| commit | a8219611cbebbd27501d9f30c804979048b98107 (patch) | |
| tree | 632dbab8b724f0148b06525771d85ad6ddb55e35 /code/app/src/services/account-service.ts | |
| parent | db2d937a38d5c309e3c6aa14f2eaf3cfe58f415e (diff) | |
| download | greatoffice-a8219611cbebbd27501d9f30c804979048b98107.tar.xz greatoffice-a8219611cbebbd27501d9f30c804979048b98107.zip | |
feat: A whole slew of things
- Use a md5 hash of the session cookie value as key for session validity check
- Introduce global state
- Introduce a common interface for form logic, and implement it on the sign-in form
- Introduce static resolve() on all services instead of new-upping all over.
- Implement /portal on the frontend to support giving the frontend a inital context from server or anywhere.
- Show a notification when users sign in for the first time after validating their email
Diffstat (limited to 'code/app/src/services/account-service.ts')
| -rw-r--r-- | code/app/src/services/account-service.ts | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/code/app/src/services/account-service.ts b/code/app/src/services/account-service.ts index 92c6126..330e588 100644 --- a/code/app/src/services/account-service.ts +++ b/code/app/src/services/account-service.ts @@ -1,12 +1,12 @@ -import {http_delete_async, http_get_async, http_post_async} from "$api/_fetch"; -import {browser} from "$app/environment"; -import {api_base, CookieNames, StorageKeys} from "$configuration"; -import {is_known_problem} from "$models/internal/KnownProblem"; -import {log_debug} from "$help/logger"; -import {StoreType, writable_persistent} from "$help/persistent-store"; -import {get} from "svelte/store"; -import type {Writable} from "svelte/store"; -import {Temporal} from "temporal-polyfill"; +import { http_delete_async, http_get_async, http_post_async } from "$api/_fetch"; +import { browser } from "$app/environment"; +import { api_base, CookieNames, StorageKeys } from "$configuration"; +import { is_known_problem } from "$models/internal/KnownProblem"; +import { log_debug } from "$help/logger"; +import { StoreType, writable_persistent } from "$help/persistent-store"; +import { get } from "svelte/store"; +import type { Writable } from "svelte/store"; +import { Temporal } from "temporal-polyfill"; import type { CreateAccountPayload, CreateAccountResponse, @@ -38,6 +38,10 @@ export class AccountService implements IAccountService { } } + static resolve(): IAccountService { + return new AccountService(); + } + async refresh_session(forceRefresh: boolean = false): Promise<void> { if (!this.session) return; const currentValue = get(this.session); @@ -67,7 +71,7 @@ export class AccountService implements IAccountService { async login_async(payload: LoginPayload): Promise<LoginResponse> { const response = await http_post_async(api_base("_/account/login"), payload); - if (response.ok) return {isLoggedIn: true}; + if (response.ok) return { isLoggedIn: true }; if (is_known_problem(response)) return { isLoggedIn: false, knownProblem: await response.json(), @@ -90,7 +94,7 @@ export class AccountService implements IAccountService { async create_account_async(payload: CreateAccountPayload): Promise<CreateAccountResponse> { const response = await http_post_async(api_base("_/account/create"), payload); - if (response.ok) return {isCreated: true}; + if (response.ok) return { isCreated: true }; if (is_known_problem(response)) return { isCreated: false, knownProblem: await response.json(), @@ -109,7 +113,7 @@ export class AccountService implements IAccountService { async update_current_async(payload: UpdateAccountPayload): Promise<UpdateAccountResponse> { const response = await http_post_async(api_base("_/account/update"), payload); - if (response.ok) return {isUpdated: true}; + if (response.ok) return { isUpdated: true }; if (is_known_problem(response)) return { isUpdated: false, knownProblem: await response.json(), |
