example frontend-backend communication
This commit is contained in:
@@ -11,8 +11,8 @@ import { Response } from 'express';
|
||||
|
||||
export interface LoginResponse {
|
||||
user: ShortUserDto;
|
||||
token: string;
|
||||
refreshToken: string;
|
||||
token?: string;
|
||||
refreshToken?: string;
|
||||
requiresOrgReauth?: boolean;
|
||||
orgLoginUrl?: string;
|
||||
organizationName?: string;
|
||||
@@ -114,10 +114,12 @@ export class LoginCommandHandler {
|
||||
const responseObj = res || mockRes;
|
||||
|
||||
// Check if client prefers Bearer token authentication
|
||||
const prefersBearerAuth = res && (
|
||||
const isWebClient = res?.req?.headers['origin'] || res?.req?.headers['referer'];
|
||||
const explicitBearerRequest = res?.req?.headers['x-auth-method'] === 'bearer';
|
||||
|
||||
const prefersBearerAuth = res && !isWebClient && (
|
||||
res.req?.headers['authorization'] !== undefined ||
|
||||
res.req?.headers['x-auth-method'] === 'bearer' ||
|
||||
res.req?.headers['accept']?.includes('application/json')
|
||||
explicitBearerRequest
|
||||
);
|
||||
|
||||
let tokenPair: any;
|
||||
@@ -168,12 +170,19 @@ export class LoginCommandHandler {
|
||||
organizationName,
|
||||
totalLoginTime: Date.now() - startTime
|
||||
});
|
||||
|
||||
const response: LoginResponse = {
|
||||
user: UserMapper.toShortDto(user),
|
||||
token: tokenPair.accessToken,
|
||||
refreshToken: tokenPair.refreshToken
|
||||
};
|
||||
let response: LoginResponse;
|
||||
if (prefersBearerAuth){
|
||||
response = {
|
||||
user: UserMapper.toShortDto(user),
|
||||
token: tokenPair.accessToken,
|
||||
refreshToken: tokenPair.refreshToken
|
||||
};
|
||||
}
|
||||
else {
|
||||
response = {
|
||||
user: UserMapper.toShortDto(user)
|
||||
};
|
||||
}
|
||||
|
||||
if (requiresOrgReauth) {
|
||||
response.requiresOrgReauth = true;
|
||||
|
||||
Reference in New Issue
Block a user