background image

 

Νικόλας Ψύλλου, Σχεδίαση και Υλοποίηση διαδικτυακής πλατφόρμας για 
εξυπηρέτηση παιχνιδιών καρτών απομακρυσμένων παικτών
 

 

Πτυχιακή / Διπλωματική Εργασία 

 

83 

    

}

 

    

async

 

validate

(

payload

:

 

any

)

 

{

 

        

return

 

{

 

...

payload

.

user 

};

 

    

}

 

}

 

 

•  Έλεγχος refresh_token 

Με  την  είσοδο  του  χρήστη  δημιουργείται  ένας  κωδικός  μέσο  της  βιβλιοθήκης  UUID 
(Universal unique Identifier), κρυπτογραφείται και αποθηκεύεται στην βάση δεδομένων. 
Αυτός ο φρουρός ελέγχει αν το κλειδί που έχει ο χρήστης είναι το ίδιο με αυτό.  
 
Κώδικας:  

@

Injectable

() 

export

 

class

 

RefreshToken

 

implements

 

CanActivate

 

{

 

    

constructor

(

private

 

reflector

:

 

Reflector

,

 

        

private

 

jwtService

:

 

JwtService

,

 

        

@

InjectRepository

(UsersEntity) 

        

private

 

readonly

 

usersRepository

:

 

Repository

<

UsersEntity

>

 

    

)

 

{

 

}

 

 

    

async

 

canActivate

(

 

        

context

:

 

ExecutionContext

,

 

    

)

:

 

Promise

<

boolean

>

 

{

 

        

// Get the user from the request

 

        

const

 

{

 

user

 

}

 

=

 context

.

switchToHttp

()

.

getRequest

()

;

 

        

// Verify user with refresh token

 

        

if

 (user

.

refresh_token) 

{

 

            

return

 

await

 

this

.

verifyToken

(user)

;

 

        

}

 

    

}

 

 

    

async

 

verifyToken

(

user

:

 

User

)

 

{

 

        

try

 

{

 

            

// Verify JWT token

 

            

const

 

jwt_rt

 

=

 

await

 

this

.

jwtService

.

verifyAsync

                user

.

refresh_token

,

 

                

{

 secret

:

 process

.

env

.

JWT_RT_SECRET

 

}