package Ġio . im ul ab . connect . handler Ċ Ċ import Ġio . im ul ab . connect .* Ċ import Ġio . im ul ab . connect . client .* Ċ Ċ /** Ċ Ġ* ĠHandler Ġresponsible Ġfor Ġimplicit Ġflow Ċ Ġ*/ Ċ class ĠImp licit Flow Handler ( ĊĠĠĠ Ġprivate Ġval ĠaccessToken Helper : ĠAccess Token Helper , ĊĠĠĠ Ġprivate Ġval Ġid Token Helper : ĠId Token Helper Ċ ) Ġ: ĠAuthor ize Handler Ġ{ ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġauthorize ( request : ĠAuthor ize Request , Ġresponse : ĠResponse ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! supports ( request )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĊĠĠĠĠĠĠĠ Ġif Ġ( request . response Types . contains ( ResponseType . TOKEN )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġissue AccessToken ( request , Ġresponse ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( request . response Types . contains ( ResponseType . ID _ TOKEN )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġissue Id Token ( request , Ġresponse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġissue AccessToken ( request : ĠAuthor ize Request , Ġresponse : ĠResponse ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest . client . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmust Accept ResponseType ( ResponseType . TOKEN ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmust Accept Grant Type ( Grant Type . IMP LICIT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠaccessToken Helper . issue Token ( request , Ġresponse ). join () ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest . mark ResponseType As Handled ( ResponseType . TOKEN ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġissue Id Token ( request : ĠAuthor ize Request , Ġresponse : ĠResponse ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! request . session . authorize Id Token ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest . client . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmust Accept ResponseType ( ResponseType . ID _ TOKEN ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmust Accept Grant Type ( Grant Type . IMP LICIT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Token Helper . issue Token ( request , Ġresponse ) ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest . mark ResponseType As Handled ( ResponseType . ID _ TOKEN ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsupports ( request : ĠAuthor ize Request ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrequest . response Types . contains Exactly ( ResponseType . TOKEN ) Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest . response Types . contains Exactly ( ResponseType . ID _ TOKEN ) Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest . response Types . contains Exactly ( ResponseType . TOKEN , ĠResponse Type . ID _ TOKEN ) ĊĠĠĠ Ġ} Ċ }