diff --git a/src/libs/auth/index.ts b/src/libs/auth/index.ts index d317696..d04ac72 100644 --- a/src/libs/auth/index.ts +++ b/src/libs/auth/index.ts @@ -24,7 +24,7 @@ export interface ResetPasswordData { } export interface ActivationStatus { - activation: 'auto' | 'manual' | 'email' | 'activated'; + activation: 'auto' | 'manual' | 'email' | 'activated' | 'sent', } export class Auth { @@ -57,7 +57,7 @@ export class Auth { async logout(): Promise { this.authData = undefined; - this.store.clearToken(); + await this.store.clearToken(); } // Use for local login or oauth login @@ -70,7 +70,7 @@ export class Auth { ...loginResponse, }; - this.store.setToken(this.authData.token); + await this.store.setToken(this.authData.token); return this.authData; } diff --git a/src/libs/fs.ts b/src/libs/fs.ts index 7a1f864..8e0303a 100644 --- a/src/libs/fs.ts +++ b/src/libs/fs.ts @@ -14,7 +14,10 @@ export interface FastSchemaOptionsWithAuthStore extends FastSchemaBaseOptions { authStore: AuthStore; } -export type FastSchemaOptions = FastSchemaOptionsWithAuthKey | FastSchemaOptionsWithAuthStore; +export type FastSchemaOptions = (FastSchemaOptionsWithAuthKey | FastSchemaOptionsWithAuthStore) & { + authCookieName?: string; + authDisableAutoHeader?: boolean; +}; export class FastSchema { private _request: IRequest; @@ -37,6 +40,8 @@ export class FastSchema { } this._request = opts?.request ?? new FsRequest(this.appUrl, { + authCookieName: this._opts.authCookieName, + authDisableAutoHeader: this._opts.authDisableAutoHeader, getAuthToken: this._authStore.getToken.bind(this._authStore), }); this._auth = new Auth(this._authStore, this._request); diff --git a/src/libs/request.ts b/src/libs/request.ts index 018601b..66666db 100644 --- a/src/libs/request.ts +++ b/src/libs/request.ts @@ -6,6 +6,8 @@ export type RequestHeaders = Record; export interface FsRequestOptions { apiBaseName?: string; + authCookieName?: string; + authDisableAutoHeader?: boolean; getAuthToken: (authKey?: string) => Promise; } @@ -71,7 +73,18 @@ export class FsRequest { delete requestHeaders['Content-Type']; } + if (this.opts.authDisableAutoHeader) { + return requestHeaders; + } + if (authToken) { + if (this.opts.authCookieName) { + const existingCookies = requestHeaders['Cookie'] ? requestHeaders['Cookie'] + '; ' : ''; + requestHeaders['Cookie'] = `${existingCookies}${this.opts.authCookieName}=${authToken}`; + console.log(requestHeaders); + return requestHeaders; + } + requestHeaders['Authorization'] = `Bearer ${authToken}`; }