package Ġde . se . team 3 . web service . handlers Ċ Ċ import Ġde . se . team 3 . logic . authentication . Authorization Manager Ċ import Ġde . se . team 3 . logic . authentication . Login Manager Ċ import Ġde . se . team 3 . logic . exceptions . Invalid Input Exception Ċ import Ġde . se . team 3 . logic . exceptions . Not Authorized Exception Ċ import Ġio . jav al in . http . Context Ċ import Ġorg . json . JSONObject Ċ Ċ object ĠAuthentication Handler Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠHandles Ġuser Ġverification Ġbefore Ġevery Ġrequest . ĊĠĠĠĠ Ġ* ĠIf Ġall Ġis Ġwell , Ġit Ġruns Ġthrough . ĊĠĠĠĠ Ġ* ĠOtherwise , Ġan Ġexception Ġis Ġthrown . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġauthorize Request ( ctx : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbe arer Token Ġ= Ġctx . header (" Authorization ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠNot Authorized Exception (" Every Ġrequest Ġmust Ġbe Ġen ric hed Ġby Ġan Ġauthorization Ġtoken .") ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! Authorization Manager . authorize Request ( bearer Token )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠNot Authorized Exception (" You Ġare Ġnot Ġauthorized Ġto Ġperform Ġthis Ġrequest .") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠLogs Ġa Ġuser Ġin Ġto Ġthe Ġsystem . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġlogin ( ctx : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontent Ġ= Ġctx . body () ĊĠĠĠĠĠĠĠ Ġval Ġlogin JSON Ġ= ĠJSONObject ( content ) ĊĊĠĠĠĠĠĠĠ Ġval Ġemail Ġ= Ġlogin JSON . getString (" email ") ĊĠĠĠĠĠĠĠ Ġval Ġpassword Ġ= Ġlogin JSON . getString (" password ") ĊĊĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= ĠLogin Manager . login ( email , Ġpassword ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtoken JSON Ġ= ĠJSONObject (). put (" token ", Ġtoken . token ) ĊĊĠĠĠĠĠĠĠ Ġctx . result ( token JSON . toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠLogs Ġa Ġuser Ġout Ġfrom Ġthe Ġsystem . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġlogout ( ctx : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbe arer Token Ġ= Ġctx . header (" Authorization ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠInvalid Input Exception (" Every Ġrequest Ġmust Ġbe Ġen ric hed Ġby Ġan Ġauthorization Ġtoken .") ĊĊĠĠĠĠĠĠĠ ĠLogin Manager . logout ( bearer Token ) ĊĠĠĠ Ġ} Ċ } Ċ