All files auth.service.ts

36.36% Statements 8/22
46.15% Branches 6/13
37.5% Functions 3/8
33.33% Lines 7/21

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);
    }
 
}