background image

 

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

 

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

 

84 

            )

;

 

            

// Hash the refresh token to check if is the same with the refresh 

token at database

 

            

const

 

refresh_token

 

=

 

this

.

hashPassword

(jwt_rt

.

refresh_token) 

            

const

 

refresh_token_exists

 

=

 

await

 

this

.

usersRepository

.

findOne

(

{

 

where

:

 

{

 refresh_token 

}

 

}

)

;

 

            

// If refresh token exists accept the user

 

            

if

 (refresh_token_exists) 

{

 

                

return

 

true

 

            

}

 

        

}

 

catch

 (error) 

{

 

            

throw

 

new

 

HttpException

(

{

 status

:

 HttpStatus

.

FORBIDDEN

,

 error

:

 

'

Unauthorized

'

 

},

 HttpStatus

.

FORBIDDEN

)

;

 

        

}

 

    

}

 

 

    

hashPassword

(

token

:

 

string

)

 

{

 

        

return

 crypto

.

createHash

(

'

sha256

'

)

.

update

(token)

.

digest

(

'

hex

'

)

;

 

    

}

 

}

 

 

 

•  Έλεγχος ρόλου χρήστη 

Ο συγκεκριμένος φρουρός διαβάζει τον ρόλο που έχει ο χρήστης, και αν ο ρόλος του είναι 
αυτός  που  αναγράφεται  πάνω  από  το  API,  τότε  δίνει  πρόσβαση  στο  χρήστη  να  το 
χρησιμοποιήσει.  
 
Κώδικας:  

@

Injectable

() 

export

 

class

 

RolesGuard

 

implements

 

CanActivate

 

{

 

  

constructor

(

private

 

reflector

:

 

Reflector

)

 

{

 

}

 

 

  

canActivate

(

 

    

context

:

 

ExecutionContext

,

 

  

)

:

 

boolean

 

|

 

Promise

<

boolean

>

 

|

 

Observable

<

boolean

>

 

{

 

    

// Get the require roles from the request

 

    

const

 

requiredRoles

 

=

 

this

.

reflector

.

getAllAndOverride

<

Role

[]

>

(

ROLES_KEYS

,

 [ 

      context

.

getHandler

()

,