Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | 1x 1x 1x 1x 1x 1x 1x |
import { Service, ConnectionHookService, AuthService, TokenData } from '@gapi/core';
import * as Boom from 'boom';
interface UserInfo extends TokenData {
scope: ['ADMIN', 'USER'];
type: 'ADMIN' | 'USER';
}
@Service()
export class AuthPrivateService {
constructor(
private authService: AuthService,
private connectionHookService: ConnectionHookService
) {
this.connectionHookService.modifyHooks.onSubConnection = this.onSubConnection.bind(this);
this.authService.modifyFunctions.validateToken = this.validateToken.bind(this);
}
onSubConnection(connectionParams): UserInfo {
return <any>{type: 'ADMIN'};
if (connectionParams.token) {
return this.validateToken(connectionParams.token, 'Subscription');
} else {
throw Boom.unauthorized();
}
}
validateToken(token: string, requestType: 'Query' | 'Subscription' = 'Query'): UserInfo {
const user = <UserInfo>this.verifyToken(token);
user.type = user.scope[0];
console.log(`${requestType} from: ${JSON.stringify(user)}`);
if (user) {
return user;
} else {
throw Boom.unauthorized();
}
}
verifyToken(token: string): TokenData {
return this.authService.verifyToken(token);
}
signJWTtoken(tokenData: TokenData): string {
return this.authService.sign(tokenData);
}
issueJWTToken(tokenData: TokenData) {
const jwtToken = this.authService.sign({
email: '',
id: 1,
scope: ['ADMIN', 'USER']
});
return jwtToken;
}
decryptPassword(password: string): string {
return this.authService.decrypt(password);
}
encryptPassword(password: string): string {
return this.authService.encrypt(password);
}
}
|