Skip to content

Commit 4826484

Browse files
committed
Upgraded to Play 2.5.12
1 parent 72d1d18 commit 4826484

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

60 files changed

+505
-489
lines changed

ChangeLog

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
master -
1+
3.0-M6 - 2017-02-17
2+
- Upgraded to Play 2.5.12
3+
3.0-M5 - 2017-02-17
24
- Pull request #576: added missing @inject annotation for UserAware (thanks @raunak)
35
- Pull request #534: Make SecuredRequest and RequestWithUser path independent (thanks @k4200)
46
3.0-M4 - 2015-11-29
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
package securesocial.controllers
22

3-
object Assets extends controllers.AssetsBuilder(play.api.http.LazyHttpErrorHandler)
3+
class Assets extends controllers.AssetsBuilder(play.api.http.LazyHttpErrorHandler)

module-code/app/securesocial/controllers/LoginPage.scala

+11-8
Original file line numberDiff line numberDiff line change
@@ -20,18 +20,18 @@ import javax.inject.Inject
2020

2121
import securesocial.core._
2222
import securesocial.core.utils._
23-
import play.api.Play
24-
import Play.current
23+
import play.api.{ Configuration, Play }
2524
import providers.UsernamePasswordProvider
25+
2626
import scala.concurrent.{ ExecutionContext, Future }
27-
import play.filters.csrf._
27+
import play.filters.csrf.CSRFAddToken
2828

2929
/**
3030
* A default Login controller that uses BasicProfile as the user type.
3131
*
3232
* @param env An environment
3333
*/
34-
class LoginPage @Inject() (override implicit val env: RuntimeEnvironment) extends BaseLoginPage
34+
class LoginPage @Inject() (override implicit val env: RuntimeEnvironment, val csrfAddToken: CSRFAddToken) extends BaseLoginPage
3535

3636
/**
3737
* The trait that defines the login page controller
@@ -44,11 +44,14 @@ trait BaseLoginPage extends SecureSocial {
4444
*/
4545
val onLogoutGoTo = "securesocial.onLogoutGoTo"
4646

47+
val csrfAddToken: CSRFAddToken
48+
val configuration: Configuration = env.configuration
49+
4750
/**
4851
* Renders the login page
4952
* @return
5053
*/
51-
def login = CSRFAddToken {
54+
def login = csrfAddToken {
5255
UserAwareAction { implicit request =>
5356
if (request.user.isDefined) {
5457
// if the user is already logged in, a referer is set and we handle the
@@ -58,7 +61,7 @@ trait BaseLoginPage extends SecureSocial {
5861
SecureSocial.refererPathAndQuery
5962
} else {
6063
None
61-
}).getOrElse(ProviderControllerHelper.landingUrl)
64+
}).getOrElse(ProviderControllerHelper.landingUrl(configuration))
6265
logger.debug("User already logged in, skipping login page. Redirecting to %s".format(to))
6366
Redirect(to)
6467
} else {
@@ -79,13 +82,13 @@ trait BaseLoginPage extends SecureSocial {
7982
*/
8083
def logout = UserAwareAction.async {
8184
implicit request =>
82-
val redirectTo = Redirect(Play.configuration.getString(onLogoutGoTo).getOrElse(env.routes.loginPageUrl))
85+
val redirectTo = Redirect(configuration.getString(onLogoutGoTo).getOrElse(env.routes.loginPageUrl))
8386
val result = for {
8487
user <- request.user
8588
authenticator <- request.authenticator
8689
} yield {
8790
redirectTo.discardingAuthenticator(authenticator).map {
88-
_.withSession(Events.fire(new LogoutEvent(user)).getOrElse(request.session))
91+
_.withSession(Events.fire(LogoutEvent(user)).getOrElse(request.session))
8992
}
9093
}
9194
result.getOrElse {

module-code/app/securesocial/controllers/MailTokenBasedOperations.scala

+6-6
Original file line numberDiff line numberDiff line change
@@ -19,30 +19,30 @@ package securesocial.controllers
1919
import java.util.UUID
2020

2121
import org.joda.time.DateTime
22-
import play.api.Play
22+
import play.api.Configuration
2323
import play.api.data.Form
2424
import play.api.data.Forms._
2525
import play.api.data.validation.Constraints._
26-
import play.api.i18n.Messages
26+
import play.api.i18n.{ I18nSupport, Messages, MessagesApi }
2727
import play.api.mvc.{ RequestHeader, Result }
2828
import securesocial.core.SecureSocial
2929
import securesocial.core.providers.MailToken
30-
import play.api.i18n.Messages.Implicits._
31-
import play.api.Play.current
3230

3331
import scala.concurrent.Future
3432

3533
/**
3634
* The base controller for password reset and password change operations
3735
*
3836
*/
39-
abstract class MailTokenBasedOperations extends SecureSocial {
37+
abstract class MailTokenBasedOperations extends SecureSocial with I18nSupport {
4038
val Success = "success"
4139
val Error = "error"
4240
val Email = "email"
4341
val TokenDurationKey = "securesocial.userpass.tokenDuration"
4442
val DefaultDuration = 60
45-
val TokenDuration = Play.current.configuration.getInt(TokenDurationKey).getOrElse(DefaultDuration)
43+
val configuration: Configuration = env.configuration
44+
val TokenDuration = configuration.getInt(TokenDurationKey).getOrElse(DefaultDuration)
45+
implicit val messagesApi: MessagesApi = env.messagesApi
4646

4747
val startForm = Form(
4848
Email -> email.verifying(nonEmpty)

module-code/app/securesocial/controllers/PasswordChange.scala

+21-14
Original file line numberDiff line numberDiff line change
@@ -21,28 +21,31 @@ import javax.inject.Inject
2121
import securesocial.core._
2222
import securesocial.core.SecureSocial._
2323
import play.api.mvc.Result
24-
import play.api.Play
24+
import play.api.{ Configuration, Play }
2525
import play.api.data.Form
2626
import play.api.data.Forms._
2727
import securesocial.core.providers.utils.PasswordValidator
28-
import play.api.i18n.{ I18nSupport, Messages }
29-
import scala.concurrent.{ Await, ExecutionContext, Future }
28+
import play.api.i18n.{ I18nSupport, Messages, MessagesApi }
29+
30+
import scala.concurrent.{ Await, Future }
3031
import play.filters.csrf._
31-
import play.api.i18n.Messages.Implicits._
32-
import play.api.Play.current
3332

3433
/**
3534
* A default PasswordChange controller that uses the BasicProfile as the user type
3635
*
3736
* @param env An environment
3837
*/
39-
class PasswordChange @Inject() (override implicit val env: RuntimeEnvironment) extends BasePasswordChange
38+
class PasswordChange @Inject() (
39+
override implicit val env: RuntimeEnvironment,
40+
val csrfAddToken: CSRFAddToken,
41+
val csrfCheck: CSRFCheck
42+
) extends BasePasswordChange
4043

4144
/**
4245
* A trait that defines the password change functionality
4346
*
4447
*/
45-
trait BasePasswordChange extends SecureSocial {
48+
trait BasePasswordChange extends SecureSocial with I18nSupport {
4649
val CurrentPassword = "currentPassword"
4750
val InvalidPasswordMessage = "securesocial.passwordChange.invalidPassword"
4851
val NewPassword = "newPassword"
@@ -52,13 +55,18 @@ trait BasePasswordChange extends SecureSocial {
5255
val Error = "error"
5356
val OkMessage = "securesocial.passwordChange.ok"
5457

58+
val csrfAddToken: CSRFAddToken
59+
val csrfCheck: CSRFCheck
60+
val configuration: Configuration = env.configuration
61+
implicit val messagesApi: MessagesApi = env.messagesApi
62+
5563
/**
5664
* The property that specifies the page the user is redirected to after changing the password.
5765
*/
5866
val onPasswordChangeGoTo = "securesocial.onPasswordChangeGoTo"
5967

6068
/** The redirect target of the handlePasswordChange action. */
61-
def onHandlePasswordChangeGoTo = Play.current.configuration.getString(onPasswordChangeGoTo).getOrElse(
69+
def onHandlePasswordChangeGoTo = configuration.getString(onPasswordChangeGoTo).getOrElse(
6270
securesocial.controllers.routes.PasswordChange.page().url
6371
)
6472

@@ -109,7 +117,7 @@ trait BasePasswordChange extends SecureSocial {
109117
*
110118
* @return
111119
*/
112-
def page = CSRFAddToken {
120+
def page = csrfAddToken {
113121
SecuredAction.async { implicit request =>
114122
execute { form: Form[ChangeInfo] =>
115123
Future.successful {
@@ -124,22 +132,21 @@ trait BasePasswordChange extends SecureSocial {
124132
*
125133
* @return
126134
*/
127-
def handlePasswordChange = CSRFCheck {
135+
def handlePasswordChange = csrfCheck {
128136
SecuredAction.async { implicit request =>
129137
execute { form: Form[ChangeInfo] =>
130138
form.bindFromRequest()(request).fold(
131139
errors => Future.successful(BadRequest(env.viewTemplates.getPasswordChangePage(errors))),
132140
info => {
133141
val newPasswordInfo = env.currentHasher.hash(info.newPassword)
134142
val userLang = request2lang(request)
135-
implicit val messages = applicationMessages
136143
env.userService.updatePasswordInfo(request.user, newPasswordInfo).map {
137144
case Some(u) =>
138145
env.mailer.sendPasswordChangedNotice(u)(request, userLang)
139-
val result = Redirect(onHandlePasswordChangeGoTo).flashing(Success -> Messages(OkMessage)(messages))
140-
Events.fire(new PasswordChangeEvent(request.user)).map(result.withSession).getOrElse(result)
146+
val result = Redirect(onHandlePasswordChangeGoTo).flashing(Success -> Messages(OkMessage))
147+
Events.fire(PasswordChangeEvent(request.user)).map(result.withSession).getOrElse(result)
141148
case None =>
142-
Redirect(onHandlePasswordChangeGoTo).flashing(Error -> Messages("securesocial.password.error")(messages))
149+
Redirect(onHandlePasswordChangeGoTo).flashing(Error -> Messages("securesocial.password.error"))
143150
}
144151
}
145152
)

module-code/app/securesocial/controllers/PasswordReset.scala

+17-10
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,16 @@ package securesocial.controllers
1818

1919
import javax.inject.Inject
2020

21+
import play.api.Configuration
2122
import play.api.data.Form
2223
import play.api.data.Forms._
23-
import play.api.i18n.Messages
24+
import play.api.i18n.{ Messages, MessagesApi }
2425
import play.filters.csrf._
2526
import play.api.mvc.Action
2627
import securesocial.core._
2728
import securesocial.core.providers.UsernamePasswordProvider
2829
import securesocial.core.providers.utils.PasswordValidator
2930
import securesocial.core.services.SaveMode
30-
import play.api.i18n.Messages.Implicits._
31-
import play.api.Play.current
3231

3332
import scala.concurrent.Future
3433

@@ -37,7 +36,11 @@ import scala.concurrent.Future
3736
*
3837
* @param env an environment
3938
*/
40-
class PasswordReset @Inject() (override implicit val env: RuntimeEnvironment) extends BasePasswordReset
39+
class PasswordReset @Inject() (
40+
override implicit val env: RuntimeEnvironment,
41+
val csrfAddToken: CSRFAddToken,
42+
val csrfCheck: CSRFCheck
43+
) extends BasePasswordReset
4144

4245
/**
4346
* The trait that provides the Password Reset functionality
@@ -57,10 +60,13 @@ trait BasePasswordReset extends MailTokenBasedOperations {
5760
).verifying(Messages(BaseRegistration.PasswordsDoNotMatch), passwords => passwords._1 == passwords._2)
5861
)
5962

63+
val csrfAddToken: CSRFAddToken
64+
val csrfCheck: CSRFCheck
65+
6066
/**
6167
* Renders the page that starts the password reset flow
6268
*/
63-
def startResetPassword = CSRFAddToken {
69+
def startResetPassword = csrfAddToken {
6470
Action {
6571
implicit request =>
6672
Ok(env.viewTemplates.getStartResetPasswordPage(startForm))
@@ -70,7 +76,7 @@ trait BasePasswordReset extends MailTokenBasedOperations {
7076
/**
7177
* Handles form submission for the start page
7278
*/
73-
def handleStartResetPassword = CSRFCheck {
79+
def handleStartResetPassword = csrfCheck {
7480
Action.async {
7581
implicit request =>
7682
startForm.bindFromRequest.fold(
@@ -100,7 +106,7 @@ trait BasePasswordReset extends MailTokenBasedOperations {
100106
*
101107
* @param token the token that identifies the user request
102108
*/
103-
def resetPassword(token: String) = CSRFAddToken {
109+
def resetPassword(token: String) = csrfAddToken {
104110
Action.async {
105111
implicit request =>
106112
executeForToken(token, false, {
@@ -115,13 +121,14 @@ trait BasePasswordReset extends MailTokenBasedOperations {
115121
*
116122
* @param token the token that identifies the user request
117123
*/
118-
def handleResetPassword(token: String) = CSRFCheck {
124+
def handleResetPassword(token: String) = csrfCheck {
119125
Action.async { implicit request =>
120126
import scala.concurrent.ExecutionContext.Implicits.global
121127
executeForToken(token, false, {
122128
t =>
123-
changePasswordForm.bindFromRequest.fold(errors =>
124-
Future.successful(BadRequest(env.viewTemplates.getResetPasswordPage(errors, token))),
129+
changePasswordForm.bindFromRequest.fold(
130+
errors =>
131+
Future.successful(BadRequest(env.viewTemplates.getResetPasswordPage(errors, token))),
125132
p =>
126133
env.userService.findByEmailAndProvider(t.email, UsernamePasswordProvider.UsernamePassword).flatMap {
127134
case Some(profile) =>

module-code/app/securesocial/controllers/ProviderController.scala

+16-14
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,14 @@
1717
package securesocial.controllers
1818

1919
import javax.inject.Inject
20-
import play.api.Play
21-
import play.api.i18n.Messages
20+
21+
import play.api.Configuration
22+
import play.api.i18n.{ I18nSupport, Messages, MessagesApi }
2223
import play.api.mvc._
2324
import securesocial.core._
2425
import securesocial.core.authenticator.CookieAuthenticator
2526
import securesocial.core.services.SaveMode
2627
import securesocial.core.utils._
27-
import play.api.i18n.Messages.Implicits._
28-
import play.api.Play.current
2928

3029
import scala.concurrent.Future
3130

@@ -38,8 +37,13 @@ class ProviderController @Inject() (override implicit val env: RuntimeEnvironmen
3837
/**
3938
* A trait that provides the means to authenticate users for web applications
4039
*/
41-
trait BaseProviderController extends SecureSocial {
42-
import securesocial.controllers.ProviderControllerHelper.{ logger, toUrl }
40+
trait BaseProviderController extends SecureSocial with I18nSupport {
41+
import securesocial.controllers.ProviderControllerHelper.toUrl
42+
43+
val logger = play.api.Logger(this.getClass.getName)
44+
45+
val configuration: Configuration = env.configuration
46+
implicit val messagesApi: MessagesApi = env.messagesApi
4347

4448
/**
4549
* The authentication entry point for GET requests
@@ -97,7 +101,7 @@ trait BaseProviderController extends SecureSocial {
97101
Future.successful(Redirect(env.routes.accessDeniedUrl).flashing("error" -> Messages("securesocial.login.accessDenied")))
98102
case failed: AuthenticationResult.Failed =>
99103
logger.error(s"[securesocial] authentication failed, reason: ${failed.error}")
100-
throw new AuthenticationException()
104+
throw AuthenticationException()
101105
case flow: AuthenticationResult.NavigationFlow => Future.successful {
102106
redirectTo.map { url =>
103107
flow.result.addToSession(SecureSocial.OriginalUrlKey -> url)
@@ -113,7 +117,7 @@ trait BaseProviderController extends SecureSocial {
113117
val evt = if (mode == SaveMode.LoggedIn) new LoginEvent(userForAction) else new SignUpEvent(userForAction)
114118
val sessionAfterEvents = Events.fire(evt).getOrElse(request.session)
115119
builder().fromUser(userForAction).flatMap { authenticator =>
116-
Redirect(toUrl(sessionAfterEvents)).withSession(sessionAfterEvents -
120+
Redirect(toUrl(sessionAfterEvents, configuration)).withSession(sessionAfterEvents -
117121
SecureSocial.OriginalUrlKey -
118122
IdentityProvider.SessionId -
119123
OAuth1Provider.CacheKey).startingAuthenticator(authenticator)
@@ -126,7 +130,7 @@ trait BaseProviderController extends SecureSocial {
126130
for (
127131
linked <- env.userService.link(currentUser, authenticated.profile);
128132
updatedAuthenticator <- request.authenticator.get.updateUser(linked);
129-
result <- Redirect(toUrl(modifiedSession)).withSession(modifiedSession -
133+
result <- Redirect(toUrl(modifiedSession, configuration)).withSession(modifiedSession -
130134
SecureSocial.OriginalUrlKey -
131135
IdentityProvider.SessionId -
132136
OAuth1Provider.CacheKey).touchingAuthenticator(updatedAuthenticator)
@@ -150,8 +154,6 @@ trait BaseProviderController extends SecureSocial {
150154
}
151155

152156
object ProviderControllerHelper {
153-
val logger = play.api.Logger("securesocial.controllers.ProviderController")
154-
155157
/**
156158
* The property that specifies the page the user is redirected to if there is no original URL saved in
157159
* the session.
@@ -173,8 +175,8 @@ object ProviderControllerHelper {
173175
*
174176
* @return
175177
*/
176-
def landingUrl = Play.configuration.getString(onLoginGoTo).getOrElse(
177-
Play.configuration.getString(ApplicationContext).getOrElse(Root)
178+
def landingUrl(configuration: Configuration) = configuration.getString(onLoginGoTo).getOrElse(
179+
configuration.getString(ApplicationContext).getOrElse(Root)
178180
)
179181

180182
/**
@@ -183,5 +185,5 @@ object ProviderControllerHelper {
183185
* @param session
184186
* @return
185187
*/
186-
def toUrl(session: Session) = session.get(SecureSocial.OriginalUrlKey).getOrElse(ProviderControllerHelper.landingUrl)
188+
def toUrl(session: Session, configuration: Configuration) = session.get(SecureSocial.OriginalUrlKey).getOrElse(ProviderControllerHelper.landingUrl(configuration))
187189
}

0 commit comments

Comments
 (0)