Skip to content

Commit 241d000

Browse files
committed
Merge pull request #56 from gakuzzzz/feature/action_builder
Added ActionBuilder
2 parents 61bb8d5 + 85738c4 commit 241d000

File tree

5 files changed

+67
-2
lines changed

5 files changed

+67
-2
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package scalaoauth2.provider
2+
3+
import play.api.mvc.{Request, WrappedRequest}
4+
5+
case class AuthInfoRequest[A, U](authInfo: AuthInfo[U], private val request: Request[A]) extends WrappedRequest[A](request)
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package scalaoauth2.provider
2+
3+
import play.api.mvc._
4+
5+
import scala.concurrent.{Future, ExecutionContext}
6+
7+
case class AuthorizedActionFunction[U](handler: ProtectedResourceHandler[U])(implicit ctx: ExecutionContext) extends ActionFunction[Request, ({type L[A] = AuthInfoRequest[A, U]})#L] with OAuth2Provider {
8+
9+
override def invokeBlock[A](request: Request[A], block: AuthInfoRequest[A, U] => Future[Result]): Future[Result] = {
10+
authorize(handler) { authInfo =>
11+
block(AuthInfoRequest(authInfo, request))
12+
}(request, ctx)
13+
}
14+
15+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package scalaoauth2.provider
2+
3+
import play.api.mvc._
4+
5+
import scala.concurrent.{Future, ExecutionContext}
6+
7+
trait OAuth2ProviderActionBuilders {
8+
9+
implicit val executionContext: ExecutionContext
10+
11+
def AuthorizedAction[U](handler: ProtectedResourceHandler[U]): ActionBuilder[({type L[A] = AuthInfoRequest[A, U]})#L] = {
12+
AuthorizedActionFunction(handler) compose Action
13+
}
14+
15+
}
16+
17+
object OAuth2ProviderActionBuilders extends OAuth2ProviderActionBuilders {
18+
val executionContext: ExecutionContext = play.api.libs.concurrent.Execution.defaultContext
19+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package scalaoauth2.provider
2+
3+
import org.scalatest._
4+
import org.scalatest.Matchers._
5+
import scala.concurrent.Future
6+
import play.api.test.Helpers._
7+
import play.api.test.FakeRequest
8+
import play.api.mvc.Results._
9+
10+
class OAuth2ProviderActionBuildersSpec extends FlatSpec {
11+
12+
import OAuth2ProviderActionBuilders._
13+
import scala.concurrent.ExecutionContext.Implicits.global
14+
15+
val action = AuthorizedAction(new MockDataHandler) { request =>
16+
Ok(request.authInfo.user.name)
17+
}
18+
19+
it should "return BadRequest" in {
20+
val result = action(FakeRequest())
21+
status(result) should be (400)
22+
contentAsString(result) should be ("")
23+
}
24+
25+
}

project/Build.scala

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,11 @@ object ScalaOAuth2Build extends Build {
5656
description := "Support scala-oauth2-core library on Playframework Scala",
5757
resolvers += "Typesafe repository" at "http://repo.typesafe.com/typesafe/maven-releases/",
5858
libraryDependencies ++= Seq(
59-
"com.typesafe.play" %% "play" % _playVersion % "provided"
59+
"com.typesafe.play" %% "play" % _playVersion % "provided",
60+
"com.typesafe.play" %% "play-test" % _playVersion % "test"
6061
) ++ commonDependenciesInTestScope
6162
)
62-
) dependsOn(scalaOAuth2Core)
63+
) dependsOn(scalaOAuth2Core % "compile->compile;test->test")
6364

6465
def _publishTo(v: String) = {
6566
val nexus = "https://oss.sonatype.org/"

0 commit comments

Comments
 (0)