Skip to content

Commit 6d7578a

Browse files
Christophe Pachetsuyoshizawa
authored andcommitted
add more information to be stored within the AccessToken (#101)
1 parent 486dd33 commit 6d7578a

File tree

4 files changed

+12
-9
lines changed

4 files changed

+12
-9
lines changed

akka-http-oauth2-provider/src/main/scala/scalaoauth2/provider/OAuth2Provider.scala

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,22 +4,21 @@ import akka.http.scaladsl.model.StatusCodes._
44
import akka.http.scaladsl.server.Directives
55
import akka.http.scaladsl.server.directives.Credentials
66
import scalaoauth2.provider.OAuth2Provider.TokenResponse
7-
import spray.json.DefaultJsonProtocol
7+
import spray.json.{ JsValue, DefaultJsonProtocol }
88

99
import scala.concurrent.ExecutionContext.Implicits.global
1010
import scala.concurrent.Future
1111
import scala.util.{ Failure, Success }
1212

1313
trait OAuth2Provider[U] extends Directives with DefaultJsonProtocol {
14-
import OAuth2Provider.tokenResponseFormat
1514
import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport._
1615

1716
val oauth2DataHandler: DataHandler[U]
1817

1918
val tokenEndpoint: TokenEndpoint
2019

21-
def grantResultToTokenResponse(grantResult: GrantHandlerResult[U]): TokenResponse =
22-
TokenResponse(grantResult.tokenType, grantResult.accessToken, grantResult.expiresIn.getOrElse(1L), grantResult.refreshToken.getOrElse(""))
20+
def grantResultToTokenResponse(grantResult: GrantHandlerResult[U]): JsValue =
21+
OAuth2Provider.tokenResponseFormat.write(TokenResponse(grantResult.tokenType, grantResult.accessToken, grantResult.expiresIn.getOrElse(1L), grantResult.refreshToken.getOrElse("")))
2322

2423
def oauth2Authenticator(credentials: Credentials): Future[Option[AuthInfo[U]]] =
2524
credentials match {
@@ -39,7 +38,7 @@ trait OAuth2Provider[U] extends Directives with DefaultJsonProtocol {
3938
case Success(maybeGrantResponse) =>
4039
maybeGrantResponse.fold(
4140
oauthError => complete(Unauthorized),
42-
grantResult => complete(tokenResponseFormat.write(grantResultToTokenResponse(grantResult)))
41+
grantResult => complete(grantResultToTokenResponse(grantResult))
4342
)
4443
case Failure(ex) => complete(InternalServerError, s"An error occurred: ${ex.getMessage}")
4544
}

play2-oauth2-provider/src/test/scala/scalaoauth2/provider/OAuth2ProviderSpec.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ class OAuth2ProviderSpec extends FlatSpec {
2222
accessToken = "access_token",
2323
expiresIn = Some(3600),
2424
refreshToken = None,
25-
scope = None
25+
scope = None,
26+
params = Map.empty
2627
)
2728
)
2829
map.get("token_type") should contain(JsString("Bearer"))

scala-oauth2-core/src/main/scala/scalaoauth2/provider/DataHandler.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,9 @@ trait DataHandler[U] extends AuthorizationHandler[U] with ProtectedResourceHandl
1515
* @param scope Inform the client of the scope of the access token issued.
1616
* @param lifeSeconds Life of the access token since its creation. In seconds.
1717
* @param createdAt Access token is created date.
18+
* @param params Additional parameters to add information/restriction on given Access token.
1819
*/
19-
case class AccessToken(token: String, refreshToken: Option[String], scope: Option[String], lifeSeconds: Option[Long], createdAt: Date) {
20+
case class AccessToken(token: String, refreshToken: Option[String], scope: Option[String], lifeSeconds: Option[Long], createdAt: Date, params: Map[String, String] = Map.empty[String, String]) {
2021
def isExpired: Boolean = expirationTimeInMilis.exists { expTime =>
2122
expTime <= System.currentTimeMillis
2223
}

scala-oauth2-core/src/main/scala/scalaoauth2/provider/GrantHandler.scala

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ case class GrantHandlerResult[U](
88
accessToken: String,
99
expiresIn: Option[Long],
1010
refreshToken: Option[String],
11-
scope: Option[String]
11+
scope: Option[String],
12+
params: Map[String, String]
1213
)
1314

1415
trait GrantHandler {
@@ -44,7 +45,8 @@ trait GrantHandler {
4445
accessToken.token,
4546
accessToken.expiresIn,
4647
accessToken.refreshToken,
47-
accessToken.scope
48+
accessToken.scope,
49+
accessToken.params
4850
)
4951

5052
}

0 commit comments

Comments
 (0)