Skip to content

Commit

Permalink
Refactored project structure
Browse files Browse the repository at this point in the history
  • Loading branch information
gakuzzzz committed Feb 21, 2013
1 parent 1e17d0d commit 258e8fa
Show file tree
Hide file tree
Showing 22 changed files with 400 additions and 383 deletions.
53 changes: 0 additions & 53 deletions module/build.sbt

This file was deleted.

24 changes: 19 additions & 5 deletions module/src/main/scala/jp/t2v/lab/play20/auth/AuthElement.scala
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import jp.t2v.lab.play2.stackc.{RequestWithAttributes, RequestAttributeKey, Stac
trait AuthElement extends StackableController with Auth {
self: Controller with AuthConfig =>

case object AuthKey extends RequestAttributeKey
private[auth] case object AuthKey extends RequestAttributeKey
case object AuthorityKey extends RequestAttributeKey

abstract override def proceed[A](req: RequestWithAttributes[A])(f: RequestWithAttributes[A] => Result): Result = {
Expand All @@ -20,16 +20,30 @@ trait AuthElement extends StackableController with Auth {

}


trait OptionalAuthElement extends StackableController with Auth {
self: Controller with AuthConfig =>
self: Controller with AuthConfig =>

case object AuthKey extends RequestAttributeKey
private[auth] case object AuthKey extends RequestAttributeKey

abstract override def proceed[A](req: RequestWithAttributes[A])(f: RequestWithAttributes[A] => Result): Result = {
val maybeUser = restoreUser(req)
super.proceed(req.set(AuthKey, maybeUser.getOrElse(null)))(f)
}

implicit def loggedIn[A](implicit req: RequestWithAttributes[A]): Option[User] = req.getAs[User](AuthKey)
}
}

trait AuthenticationElement extends StackableController with Auth {
self: Controller with AuthConfig =>

private[auth] case object AuthKey extends RequestAttributeKey

abstract override def proceed[A](req: RequestWithAttributes[A])(f: RequestWithAttributes[A] => Result): Result = {
restoreUser(req).map {
user => super.proceed(req.set(AuthKey, user))(f)
}.getOrElse(authenticationFailed(req))
}

implicit def loggedIn[A](implicit req: RequestWithAttributes[A]): User = req.getAs[User](AuthKey).get

}
82 changes: 69 additions & 13 deletions project/Build.scala
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,79 @@ import play.Project._

object ApplicationBuild extends Build {

val appName = "sample"
val appVersion = "0.1"
val appName = "play21.auth"

lazy val module = Project("play20-auth-module", file("module"))

val appDependencies = Seq(
jdbc,
anorm,
"org.mindrot" % "jbcrypt" % "0.3m"
lazy val baseSettings = Seq(
version := "0.8-SNAPSHOT",
scalaVersion := "2.10.0",
scalaBinaryVersion := "2.10",
crossScalaVersions := Seq("2.10.0"),
organization := "jp.t2v",
resolvers += "Typesafe repository" at "http://repo.typesafe.com/typesafe/releases/",
resolvers += "Sonatype Snapshots" at "https://oss.sonatype.org/content/repositories/snapshots"
)

lazy val root = play.Project(appName, appVersion, appDependencies, path = file(".")).settings(
resolvers ++= Seq(
"jbcrypt repo" at "http://mvnrepository.com/",
"Sonatype Snapshots" at "https://oss.sonatype.org/content/repositories/snapshots"
lazy val core = Project("core", base = file("module"))
.settings(baseSettings: _*)
.settings(
name := appName,
libraryDependencies += "play" %% "play" % "2.1.0",
libraryDependencies += "jp.t2v" %% "stackable-controller" % "0.1-SNAPSHOT",
publishMavenStyle := true,
publishArtifact in Test := false,
pomIncludeRepository := { _ => false },
publishTo <<= version { (v: String) =>
val nexus = "https://oss.sonatype.org/"
if (v.trim.endsWith("SNAPSHOT"))
Some("snapshots" at nexus + "content/repositories/snapshots")
else
Some("releases" at nexus + "service/local/staging/deploy/maven2")
},
pomExtra := (
<url>https://github.com/t2v/play20-auth</url>
<licenses>
<license>
<name>Apache License, Version 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0.html</url>
<distribution>repo</distribution>
</license>
</licenses>
<scm>
<url>git@github.com:t2v/play20-auth.git</url>
<connection>scm:git:git@github.com:t2v/play20-auth.git</connection>
</scm>
<developers>
<developer>
<id>gakuzzzz</id>
<name>gakuzzzz</name>
<url>https://github.com/gakuzzzz</url>
</developer>
</developers>
)
)
).dependsOn(module)

lazy val test = Project("test", base = file("test"))
.settings(baseSettings: _*)
.settings(
name := appName + ".test",
libraryDependencies += "play" %% "play-test" % "2.1.0"
).dependsOn(core)

lazy val sample = play.Project("sample", path = file("sample"))
.settings(baseSettings: _*)
.settings(
libraryDependencies += jdbc,
libraryDependencies += anorm,
libraryDependencies += "org.mindrot" % "jbcrypt" % "0.3m",
publishLocal := {},
publish := {}
).dependsOn(core, test % "test")

lazy val root = Project("root", base = file("."))
.settings(baseSettings: _*)
.settings(
publishLocal := {},
publish := {}
).aggregate(core, test, sample)

}
File renamed without changes.
Loading

0 comments on commit 258e8fa

Please sign in to comment.