package Ġio . staw allet . signer . data Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . preference . Preference Manager Ċ import Ġandroid . util . Base 6 4 Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . google . gson . annotations . SerializedName Ċ import Ġio . staw allet . signer . application Ċ import Ġjava . lang . Exception Ċ Ċ /** Ċ Ġ* ĠShould Ġget Ġmanually Ġupdated Ġwhile Ġlogin / logout Ċ Ġ* Ġ` null ` Ġmeans Ġ` not Ġlogged Ġin ` Ċ Ġ*/ Ċ Ċ @ Suppress Lint (" Static Field Leak ") Ċ object Ġsession Manager Ġ{ ĊĊĠĠĠ Ġconst Ġval ĠADMIN Ġ= Ġ" admin " ĊĠĠĠ Ġconst Ġval ĠCLIENT Ġ= Ġ" client " ĊĠĠĠ Ġconst Ġval ĠS EM IT R UST ED _ CLIENT Ġ= Ġ" se mit rust ed _ client " ĊĠĠĠ Ġconst Ġval ĠTR UST ED _ CLIENT Ġ= Ġ" trusted _ client " ĊĊĠĠĠ Ġvar Ġjwt Token : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPreference Manager . getDefault SharedPreferences ( application . application Context ). edit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. putString (" jwt Token ", Ġvalue ). apply () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠPreference Manager . getDefault SharedPreferences ( application . application Context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getString (" jwt Token ", Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġfb Token : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPreference Manager . getDefault SharedPreferences ( application . application Context ). edit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. putString (" fb Token ", Ġvalue ). apply () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠPreference Manager . getDefault SharedPreferences ( application . application Context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getString (" fb Token ", Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlogin ( t : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġjwt Token Ġ= Ġt ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Payload () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠToken Ġcan Ġnot Ġbe Ġparsed ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO : ĠRaise Ġa Ġexception ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjwt Token Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġwh ip Session () Ġ{ ĊĠĠĠĠĠĠĠ Ġjwt Token Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġcookie Jar . clear () ĊĠĠĠĠĠĠĠ Ġcookie Jar . clear Session () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis LoggedIn () Ġ= Ġjwt Token Ġ!= Ġnull ĊĊĠĠĠ Ġfun Ġget Payload (): ĠJwt Payload ? Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ(! is LoggedIn ()) Ġnull ĊĠĠĠĠĠĠĠ Ġelse ĠGson (). fromJson ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBase 6 4 . decode ( jwt Token ?. split (".") ?. get ( 1 ), ĠBase 6 4 . NO _ P ADDING ). toString ( Charsets . UTF _ 8 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJwt Payload :: class . java ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġroles : ĠList < String > Ġget () Ġ= Ġget Payload ()?. roles Ġ?: Ġempty List () ĊĊĠĠĠ Ġval Ġis Admin : ĠBoolean Ġget () Ġ= Ġroles . contains ( ADMIN ) ĊĠĠĠ Ġval Ġis Client : ĠBoolean Ġget () Ġ= Ġis Sem i Trusted Client Ġor Ġroles . contains ( CLIENT ) ĊĠĠĠ Ġval Ġis Sem i Trusted Client : ĠBoolean Ġget () Ġ= Ġis Trusted Client Ġor Ġroles . contains ( SE MIT R UST ED _ CLIENT ) ĊĠĠĠ Ġval Ġis Trusted Client : ĠBoolean Ġget () Ġ= Ġroles . contains ( TR UST ED _ CLIENT ) ĊĊĠĠĠ Ġfun Ġbe arer Token (): ĠString ? Ġ= Ġjwt Token . run Ġ{ Ġ" Bearer Ġ$ this " Ġ} Ċ } Ċ Ċ data Ġclass ĠJwt Payload ( ĊĠĠĠ Ġval ĠsessionId : ĠString , ĊĠĠĠ Ġval Ġdevice Uid : ĠString ?, ĊĠĠĠ Ġ@ SerializedName (" id ") Ġval Ġmember Id : ĠString , ĊĠĠĠ Ġval Ġemail : ĠString , ĊĠĠĠ Ġ@ SerializedName (" fn m ") Ġval ĠfirstName : ĠString ?, ĊĠĠĠ Ġ@ SerializedName (" ln m ") Ġval ĠlastName : ĠString ?, ĊĠĠĠ Ġ@ SerializedName (" ioc ") Ġval Ġis On boarding Completed : ĠBoolean ?, ĊĠĠĠ Ġ@ SerializedName (" ie v ") Ġval Ġis Evidence Verified : ĠBoolean ?, ĊĠĠĠ Ġval Ġroles : ĠList < String > Ċ ) Ċ