@@ -21,28 +21,31 @@ import javax.inject.Inject
21
21
import securesocial .core ._
22
22
import securesocial .core .SecureSocial ._
23
23
import play .api .mvc .Result
24
- import play .api .Play
24
+ import play .api .{ Configuration , Play }
25
25
import play .api .data .Form
26
26
import play .api .data .Forms ._
27
27
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 }
30
31
import play .filters .csrf ._
31
- import play .api .i18n .Messages .Implicits ._
32
- import play .api .Play .current
33
32
34
33
/**
35
34
* A default PasswordChange controller that uses the BasicProfile as the user type
36
35
*
37
36
* @param env An environment
38
37
*/
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
40
43
41
44
/**
42
45
* A trait that defines the password change functionality
43
46
*
44
47
*/
45
- trait BasePasswordChange extends SecureSocial {
48
+ trait BasePasswordChange extends SecureSocial with I18nSupport {
46
49
val CurrentPassword = " currentPassword"
47
50
val InvalidPasswordMessage = " securesocial.passwordChange.invalidPassword"
48
51
val NewPassword = " newPassword"
@@ -52,13 +55,18 @@ trait BasePasswordChange extends SecureSocial {
52
55
val Error = " error"
53
56
val OkMessage = " securesocial.passwordChange.ok"
54
57
58
+ val csrfAddToken : CSRFAddToken
59
+ val csrfCheck : CSRFCheck
60
+ val configuration : Configuration = env.configuration
61
+ implicit val messagesApi : MessagesApi = env.messagesApi
62
+
55
63
/**
56
64
* The property that specifies the page the user is redirected to after changing the password.
57
65
*/
58
66
val onPasswordChangeGoTo = " securesocial.onPasswordChangeGoTo"
59
67
60
68
/** The redirect target of the handlePasswordChange action. */
61
- def onHandlePasswordChangeGoTo = Play .current. configuration.getString(onPasswordChangeGoTo).getOrElse(
69
+ def onHandlePasswordChangeGoTo = configuration.getString(onPasswordChangeGoTo).getOrElse(
62
70
securesocial.controllers.routes.PasswordChange .page().url
63
71
)
64
72
@@ -109,7 +117,7 @@ trait BasePasswordChange extends SecureSocial {
109
117
*
110
118
* @return
111
119
*/
112
- def page = CSRFAddToken {
120
+ def page = csrfAddToken {
113
121
SecuredAction .async { implicit request =>
114
122
execute { form : Form [ChangeInfo ] =>
115
123
Future .successful {
@@ -124,22 +132,21 @@ trait BasePasswordChange extends SecureSocial {
124
132
*
125
133
* @return
126
134
*/
127
- def handlePasswordChange = CSRFCheck {
135
+ def handlePasswordChange = csrfCheck {
128
136
SecuredAction .async { implicit request =>
129
137
execute { form : Form [ChangeInfo ] =>
130
138
form.bindFromRequest()(request).fold(
131
139
errors => Future .successful(BadRequest (env.viewTemplates.getPasswordChangePage(errors))),
132
140
info => {
133
141
val newPasswordInfo = env.currentHasher.hash(info.newPassword)
134
142
val userLang = request2lang(request)
135
- implicit val messages = applicationMessages
136
143
env.userService.updatePasswordInfo(request.user, newPasswordInfo).map {
137
144
case Some (u) =>
138
145
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)
141
148
case None =>
142
- Redirect (onHandlePasswordChangeGoTo).flashing(Error -> Messages (" securesocial.password.error" )(messages) )
149
+ Redirect (onHandlePasswordChangeGoTo).flashing(Error -> Messages (" securesocial.password.error" ))
143
150
}
144
151
}
145
152
)
0 commit comments