Skip to content

Commit 08835d3

Browse files
author
Elizabeth Dunphy
committed
TASK: fix password submission
1 parent 5230759 commit 08835d3

File tree

5 files changed

+67
-20
lines changed

5 files changed

+67
-20
lines changed

Classes/Controller/ProfileController.php

Lines changed: 45 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,12 @@
44
use Neos\Flow\Annotations as Flow;
55
use Neos\Flow\Security\Account;
66
use Neos\Flow\Security\Context;
7+
use Neos\Flow\Security\AccountRepository;
8+
use Neos\Flow\Security\Authentication\AuthenticationManagerInterface;
9+
use Neos\Flow\Security\Authentication\Token\UsernamePassword;
10+
use Neos\Flow\Security\Authentication\TokenInterface;
11+
use Neos\Flow\Security\Cryptography\HashService;
712
use Neos\Flow\Mvc\Controller\ActionController;
8-
use Neos\Neos\Domain\Service\UserService;
913
use Neos\Party\Domain\Repository\PartyRepository;
1014
use Sandstorm\UserManagement\Domain\Model\User;
1115
use Sandstorm\UserManagement\Domain\Repository\UserRepository;
@@ -34,10 +38,22 @@ class ProfileController extends ActionController
3438
protected $userRepository;
3539

3640
/**
37-
* @var UserService
3841
* @Flow\Inject
42+
* @var AuthenticationManagerInterface
3943
*/
40-
protected $userService;
44+
protected $authenticationManager;
45+
46+
/**
47+
* @Flow\Inject
48+
* @var AccountRepository
49+
*/
50+
protected $accountRepository;
51+
52+
/**
53+
* @Flow\Inject
54+
* @var HashService
55+
*/
56+
protected $hashService;
4157

4258

4359
public function indexAction()
@@ -65,10 +81,10 @@ public function editProfileAction(User $user)
6581
* @Flow\Validate(argumentName="password", type="\Neos\Neos\Validation\Validator\PasswordValidator", options={ "allowEmpty"=1, "minimum"=1, "maximum"=255 })
6682
*/
6783
public function setNewPasswordAction(Account $account, array $password = array()) {
68-
$user = $this->userService->getUser($account->getAccountIdentifier(), $account->getAuthenticationProviderName());
84+
$user = $this->userRepository->findOneByAccount($account);
6985
$password = array_shift($password);
7086
if (strlen(trim(strval($password))) > 0) {
71-
$this->userService->setUserPassword($user, $password);
87+
$this->setPassword($account, $password);
7288
}
7389
$this->redirect('index');
7490

@@ -84,4 +100,28 @@ protected function getErrorFlashMessage()
84100
return false;
85101
}
86102

103+
/**
104+
* Sets a new password for the given account
105+
*
106+
* @param Account $account The user to set the password for
107+
* @param string $password A new password
108+
* @return void
109+
* @api
110+
*/
111+
protected function setPassword(Account $account, $password)
112+
{
113+
$tokens = $this->authenticationManager->getTokens();
114+
$indexedTokens = array();
115+
foreach ($tokens as $token) {
116+
/** @var TokenInterface $token */
117+
$indexedTokens[$token->getAuthenticationProviderName()] = $token;
118+
}
119+
120+
/** @var Account $account */
121+
$authenticationProviderName = $account->getAuthenticationProviderName();
122+
if (isset($indexedTokens[$authenticationProviderName]) && $indexedTokens[$authenticationProviderName] instanceof UsernamePassword) {
123+
$account->setCredentialsSource($this->hashService->hashPassword($password));
124+
$this->accountRepository->update($account);
125+
}
126+
}
87127
}

Resources/Private/Partials/Profile/AccountData.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,17 @@
66
<f:section name="DataTable">
77
<table>
88
<tr>
9-
<td><f:translate id="accountData.email" package="Sandstorm.UserManagement" source="Partials/Profile/AccountData"/>:</td>
9+
<td><f:translate id="accountData.email" package="Sandstorm.UserManagement" source="Partials/Profile/AccountData"/></td>
1010
<td>{account.accountIdentifier}</td>
1111
</tr>
1212
<tr>
13-
<td><f:translate id="accountData.roles" package="Sandstorm.UserManagement" source="Partials/Profile/AccountData"/>:</td>
13+
<td><f:translate id="accountData.roles" package="Sandstorm.UserManagement" source="Partials/Profile/AccountData"/></td>
1414
<td>
1515
<f:for each="{account.roles}" as="role">{role.name}</f:for>
1616
</td>
1717
</tr>
1818
<tr>
19-
<td><f:translate id="accountData.createdOn" package="Sandstorm.UserManagement" source="Partials/Profile/AccountData"/>:</td>
19+
<td><f:translate id="accountData.createdOn" package="Sandstorm.UserManagement" source="Partials/Profile/AccountData"/></td>
2020
<td>
2121
<f:format.date format='<f:translate id="accountData.dateFormat" package="Sandstorm.UserManagement" source="Partials/Profile/AccountData"/>'>{account.creationDate.date}</f:format.date>
2222
</td>

Resources/Private/Partials/Profile/PasswordForm.html

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@
55

66
<f:section name="NewPassword">
77
<fieldset>
8-
<label>
8+
<label for="password[0]">
99
<f:translate id="passwordForm.newPassword" package="Sandstorm.UserManagement" source="Partials/Profile/PasswordForm"/>:
10-
<f:form.password name="password[0]" id="password[0]" class="{f:validation.ifHasErrors(for: 'password', then: ' form-error')}"/>
1110
</label>
12-
<label>
11+
<f:form.password name="password[0]" id="password[0]" class="{f:validation.ifHasErrors(for: 'password', then: ' form-error')}"/>
12+
<label for="password[1]">
1313
<f:translate id="passwordForm.confirmNewPassword" package="Sandstorm.UserManagement" source="Partials/Profile/PasswordForm"/>:
14-
<f:form.password name="password[1]" id="password[1]" class="{f:validation.ifHasErrors(for: 'password', then: ' form-error')}" />
1514
</label>
15+
<f:form.password name="password[1]" id="password[1]" class="{f:validation.ifHasErrors(for: 'password', then: ' form-error')}" />
1616
<f:render partial="FormErrors" section="ValidationResults" arguments="{for: 'password'}"/>
1717
<button class="button large primary"><f:translate id="passwordForm.changePassword" package="Sandstorm.UserManagement" source="Partials/Profile/PasswordForm"/></button>
1818
</fieldset>

Resources/Private/Partials/Profile/PersonalForm.html

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,22 @@
55

66
<f:section name="PersonalForm">
77
<fieldset>
8-
<label class="{f:validation.ifHasErrors(for: 'password', then: ' form-error')}">
8+
<label for="profile-firstname" class="{f:validation.ifHasErrors(for: 'password', then: ' form-error')}">
99
<f:translate id="personalForm.firstName" package="Sandstorm.UserManagement" source="Partials/Profile/PersonalForm"/>:
10-
<f:form.textfield property="firstName" name="firstName" value="{user.firstName}" placeholder='<f:translate id="personalForm.firstName" package="Sandstorm.UserManagement" source="Partials/Profile/PersonalForm"/>'/>
1110
</label>
12-
13-
<label>
11+
<f:form.textfield property="firstName"
12+
name="firstName"
13+
value="{user.firstName}"
14+
id="profile-firstname"
15+
placeholder="{f:translate(id:'personalForm.firstName',package:'Sandstorm.UserManagement',source:'Partials/Profile/PersonalForm')}" />
16+
<label for="profile-lastname">
1417
<f:translate id="personalForm.lastName" package="Sandstorm.UserManagement" source="Partials/Profile/PersonalForm"/>:
15-
<f:form.textfield property="lastName" name="lastName" value="{user.lastName}" placeholder='<f:translate id="personalForm.lastName" package="Sandstorm.UserManagement" source="Partials/Profile/PersonalForm"/>'/>
1618
</label>
19+
<f:form.textfield property="lastName"
20+
name="lastName"
21+
value="{user.lastName}"
22+
id="profile-lastname"
23+
placeholder="{f:translate(id:'personalForm.lastName',package:'Sandstorm.UserManagement',source:'Partials/Profile/PersonalForm')}" />
1724

1825
<f:render partial="FormErrors" section="ValidationResults" arguments="{for: 'user'}"/>
1926

Resources/Private/Translations/en/Partials/Profile/AccountData.xlf

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@
33
<file original="" product-name="Sandstorm.UserManagement" source-language="en" datatype="plaintext">
44
<body>
55
<trans-unit id="accountData.email" xml:space="preserve">
6-
<source>E-mail address</source>
6+
<source>E-mail address:</source>
77
</trans-unit>
88
<trans-unit id="accountData.roles" xml:space="preserve">
9-
<source>Role(s)</source>
9+
<source>Role(s):</source>
1010
</trans-unit>
1111
<trans-unit id="accountData.createdOn" xml:space="preserve">
12-
<source>Created on</source>
12+
<source>Created on:</source>
1313
</trans-unit>
1414
<trans-unit id="accountData.dateFormat" xml:space="preserve">
1515
<source>Y-m-d</source>

0 commit comments

Comments
 (0)