Update code style and fix tests

This commit is contained in:
Damian Mooyman 2017-10-30 17:30:41 +13:00
parent f6b7cf8889
commit 3c8848a090
No known key found for this signature in database
GPG Key ID: 78B823A10DE27D1A
8 changed files with 78 additions and 78 deletions

View File

@ -119,7 +119,7 @@ class GridFieldDeleteAction implements GridField_ColumnProvider, GridField_Actio
if (!$record->canEdit()) { if (!$record->canEdit()) {
return null; return null;
} }
$title = _t('SilverStripe\\Forms\\GridField\\GridFieldDeleteAction.UnlinkRelation', "Unlink"); $title = _t(__CLASS__.'.UnlinkRelation', "Unlink");
$field = GridField_FormAction::create( $field = GridField_FormAction::create(
$gridField, $gridField,
@ -144,8 +144,8 @@ class GridFieldDeleteAction implements GridField_ColumnProvider, GridField_Actio
array('RecordID' => $record->ID) array('RecordID' => $record->ID)
) )
->addExtraClass('gridfield-button-delete btn--icon-md font-icon-trash-bin btn--no-text grid-field__icon-action') ->addExtraClass('gridfield-button-delete btn--icon-md font-icon-trash-bin btn--no-text grid-field__icon-action')
->setAttribute('title', _t('SilverStripe\\Forms\\GridField\\GridFieldDeleteAction.Delete', "Delete")) ->setAttribute('title', _t(__CLASS__.'.Delete', "Delete"))
->setDescription(_t('SilverStripe\\Forms\\GridField\\GridFieldDeleteAction.DELETE_DESCRIPTION', 'Delete')); ->setDescription(_t(__CLASS__.'.DELETE_DESCRIPTION', 'Delete'));
} }
return $field->Field(); return $field->Field();
} }
@ -155,8 +155,8 @@ class GridFieldDeleteAction implements GridField_ColumnProvider, GridField_Actio
* *
* @param GridField $gridField * @param GridField $gridField
* @param string $actionName * @param string $actionName
* @param mixed $arguments * @param array $arguments
* @param array $data - form data * @param array $data Form data
* @throws ValidationException * @throws ValidationException
*/ */
public function handleAction(GridField $gridField, $actionName, $arguments, $data) public function handleAction(GridField $gridField, $actionName, $arguments, $data)
@ -171,7 +171,7 @@ class GridFieldDeleteAction implements GridField_ColumnProvider, GridField_Actio
if ($actionName == 'deleterecord') { if ($actionName == 'deleterecord') {
if (!$item->canDelete()) { if (!$item->canDelete()) {
throw new ValidationException( throw new ValidationException(
_t('SilverStripe\\Forms\\GridField\\GridFieldDeleteAction.DeletePermissionsFailure', "No delete permissions") _t(__CLASS__.'.DeletePermissionsFailure', "No delete permissions")
); );
} }
@ -179,7 +179,7 @@ class GridFieldDeleteAction implements GridField_ColumnProvider, GridField_Actio
} else { } else {
if (!$item->canEdit()) { if (!$item->canEdit()) {
throw new ValidationException( throw new ValidationException(
_t('SilverStripe\\Forms\\GridField\\GridFieldDeleteAction.EditPermissionsFailure', "No permission to unlink record") _t(__CLASS__.'.EditPermissionsFailure', "No permission to unlink record")
); );
} }

View File

@ -12,14 +12,11 @@ use SilverStripe\Security\Security;
* Adds a delete action for the gridfield to remove a relationship from group. * Adds a delete action for the gridfield to remove a relationship from group.
* This is a special case where it captures whether the current user is the record being removed and * This is a special case where it captures whether the current user is the record being removed and
* prevents removal from happening. * prevents removal from happening.
*
* Class GroupGridFieldDeleteAction
* @package SilverStripe\Security
*/ */
class GridFieldGroupDeleteAction extends GridFieldDeleteAction class GridFieldGroupDeleteAction extends GridFieldDeleteAction
{ {
/** /**
* @var integer * @var int
*/ */
protected $groupID; protected $groupID;
@ -49,8 +46,8 @@ class GridFieldGroupDeleteAction extends GridFieldDeleteAction
* *
* @param GridField $gridField * @param GridField $gridField
* @param string $actionName * @param string $actionName
* @param mixed $arguments * @param array $arguments
* @param array $data - form data * @param array $data Form data
* @throws ValidationException * @throws ValidationException
*/ */
public function handleAction(GridField $gridField, $actionName, $arguments, $data) public function handleAction(GridField $gridField, $actionName, $arguments, $data)
@ -74,7 +71,9 @@ class GridFieldGroupDeleteAction extends GridFieldDeleteAction
protected function canUnlink($record) protected function canUnlink($record)
{ {
$currentUser = Security::getCurrentUser(); $currentUser = Security::getCurrentUser();
if (($record instanceof Member && $record->ID === $currentUser->ID) if ($currentUser
&& $record instanceof Member
&& (int)$record->ID === (int)$currentUser->ID
&& Permission::checkMember($record, 'ADMIN') && Permission::checkMember($record, 'ADMIN')
) { ) {
$adminGroups = array_intersect( $adminGroups = array_intersect(

View File

@ -101,8 +101,8 @@ class Member_Validator extends RequiredFields
// Only validate identifier field if it's actually set. This could be the case if // Only validate identifier field if it's actually set. This could be the case if
// somebody removes `Email` from the list of required fields. // somebody removes `Email` from the list of required fields.
$id = isset($data['ID']) ? (int)$data['ID'] : 0;
if (isset($data[$identifierField])) { if (isset($data[$identifierField])) {
$id = isset($data['ID']) ? (int)$data['ID'] : 0;
if (!$id && ($ctrl = $this->form->getController())) { if (!$id && ($ctrl = $this->form->getController())) {
// get the record when within GridField (Member editing page in CMS) // get the record when within GridField (Member editing page in CMS)
if ($ctrl instanceof GridFieldDetailForm_ItemRequest && $record = $ctrl->getRecord()) { if ($ctrl instanceof GridFieldDetailForm_ItemRequest && $record = $ctrl->getRecord()) {
@ -138,8 +138,11 @@ class Member_Validator extends RequiredFields
} }
$currentUser = Security::getCurrentUser(); $currentUser = Security::getCurrentUser();
$id = $data['ID']; if ($currentUser
if ($id === $currentUser->ID && Permission::checkMember($currentUser, 'ADMIN')) { && $id
&& $id === (int)$currentUser->ID
&& Permission::checkMember($currentUser, 'ADMIN')
) {
$stillAdmin = true; $stillAdmin = true;
if (!isset($data['DirectGroups'])) { if (!isset($data['DirectGroups'])) {
@ -167,8 +170,6 @@ class Member_Validator extends RequiredFields
} }
} }
// Execute the validators on the extensions // Execute the validators on the extensions
$results = $this->extend('updatePHP', $data, $this->form); $results = $this->extend('updatePHP', $data, $this->form);
$results[] = $valid; $results[] = $valid;

View File

@ -5,18 +5,18 @@ Feature: Lost Password
Using my email Using my email
Background: Background:
Given a "member" "Admin" with "Email"="admin@test.com" Given a "member" "Admin" with "Email"="admin@example.org"
Scenario: I can request a password reset by email Scenario: I can request a password reset by email
Given I go to "Security/login" Given I go to "Security/login"
When I follow "I've lost my password" When I follow "I've lost my password"
And I fill in "admin@test.com" for "Email" And I fill in "admin@example.org" for "Email"
And I press the "Send me the password reset link" button And I press the "Send me the password reset link" button
Then I should see "A reset link has been sent to 'admin@test.com'" Then I should see "A reset link has been sent to 'admin@example.org'"
And there should be an email to "admin@test.com" titled "Your password reset link" And there should be an email to "admin@example.org" titled "Your password reset link"
When I click on the "password reset link" link in the email to "admin@test.com" When I click on the "password reset link" link in the email to "admin@example.org"
Then I should see "Please enter a new password" Then I should see "Please enter a new password"
When I fill in "newpassword" for "New Password" When I fill in "newpassword" for "New Password"
And I fill in "newpassword" for "Confirm New Password" And I fill in "newpassword" for "Confirm New Password"
And I press the "Change Password" button And I press the "Change Password" button
Then the password for "admin@test.com" should be "newpassword" Then the password for "admin@example.org" should be "newpassword"

View File

@ -5,9 +5,9 @@ Feature: Manage users
So that I can control access to the CMS So that I can control access to the CMS
Background: Background:
Given a "member" "ADMIN" belonging to "ADMIN group" with "Email"="ADMIN@example.org" Given a "member" "ADMIN" belonging to "ADMIN group" with "Email"="admin@example.org"
And the "member" "ADMIN" belonging to "ADMIN group2" And the "member" "ADMIN" belonging to "ADMIN group2"
And a "member" "Staff" belonging to "Staff group" with "Email"="staffmember@test.com" And a "member" "Staff" belonging to "Staff group" with "Email"="staffmember@example.org"
And the "group" "ADMIN group" has permissions "Full administrative rights" And the "group" "ADMIN group" has permissions "Full administrative rights"
And the "group" "ADMIN group2" has permissions "Full administrative rights" And the "group" "ADMIN group2" has permissions "Full administrative rights"
And I am logged in with "ADMIN" permissions And I am logged in with "ADMIN" permissions
@ -31,15 +31,15 @@ Feature: Manage users
Scenario: I can list all users regardless of group Scenario: I can list all users regardless of group
When I click the "Users" CMS tab When I click the "Users" CMS tab
Then I should see "admin@test.com" in the "#Root_Users" element Then I should see "admin@example.org" in the "#Root_Users" element
And I should see "staffmember@test.com" in the "#Root_Users" element And I should see "staffmember@example.org" in the "#Root_Users" element
Scenario: I can list all users in a specific group Scenario: I can list all users in a specific group
When I click the "Groups" CMS tab When I click the "Groups" CMS tab
# TODO Please check how performant this is # TODO Please check how performant this is
And I click "ADMIN group" in the "#Root_Groups" element And I click "ADMIN group" in the "#Root_Groups" element
Then I should see "admin@test.com" in the "#Root_Members" element Then I should see "admin@example.org" in the "#Root_Members" element
And I should not see "staffmember@test.com" in the "#Root_Members" element And I should not see "staffmember@example.org" in the "#Root_Members" element
Scenario: I can add a user to the system Scenario: I can add a user to the system
When I click the "Users" CMS tab When I click the "Users" CMS tab
@ -47,16 +47,16 @@ Feature: Manage users
And I fill in the following: And I fill in the following:
| First Name | John | | First Name | John |
| Surname | Doe | | Surname | Doe |
| Email | john.doe@test.com | | Email | john.doe@example.org |
And I press the "Create" button And I press the "Create" button
Then I should see a "Saved member" message Then I should see a "Saved member" message
When I go to "admin/security/" When I go to "admin/security/"
Then I should see "john.doe@test.com" in the "#Root_Users" element Then I should see "john.doe@example.org" in the "#Root_Users" element
Scenario: I can edit an existing user and add him to an existing group Scenario: I can edit an existing user and add him to an existing group
When I click the "Users" CMS tab When I click the "Users" CMS tab
And I click "staffmember@test.com" in the "#Root_Users" element And I click "staffmember@example.org" in the "#Root_Users" element
And I select "ADMIN group" from "Groups" And I select "ADMIN group" from "Groups"
And I press the "Save" button And I press the "Save" button
Then I should see a "Saved Member" message Then I should see a "Saved Member" message
@ -64,11 +64,11 @@ Feature: Manage users
When I go to "admin/security" When I go to "admin/security"
And I click the "Groups" CMS tab And I click the "Groups" CMS tab
And I click "ADMIN group" in the "#Root_Groups" element And I click "ADMIN group" in the "#Root_Groups" element
Then I should see "staffmember@test.com" Then I should see "staffmember@example.org"
Scenario: I can delete an existing user Scenario: I can delete an existing user
When I click the "Users" CMS tab When I click the "Users" CMS tab
And I click "staffmember@test.com" in the "#Root_Users" element And I click "staffmember@example.org" in the "#Root_Users" element
And I press the "Delete" button, confirming the dialog And I press the "Delete" button, confirming the dialog
Then I should see "admin@test.com" Then I should see "admin@example.org"
And I should not see "staffmember@test.com" And I should not see "staffmember@example.org"

View File

@ -1,16 +1,16 @@
@retry @retry
Feature: Manage my own settings Feature: Manage my own settings
As a CMS user As a CMS user
I want to be able to change personal settings I want to be able to change personal settings
In order to streamline my CMS experience In order to streamline my CMS experience
Background: Background:
Given a "member" "Joe" belonging to "Admin group" with "Email"="joe@test.com" and "Password"="secret" Given a "member" "Joe" belonging to "Admin group" with "Email"="joe@example.org" and "Password"="secret"
And the "group" "Admin group" has permissions "Full administrative rights" And the "group" "Admin group" has permissions "Full administrative rights"
And the "member" "Joe" belonging to "Admin group2" And the "member" "Joe" belonging to "Admin group2"
And the "group" "Admin group2" has permissions "Full administrative rights" And the "group" "Admin group2" has permissions "Full administrative rights"
And I log in with "joe@test.com" and "secret" And I log in with "joe@example.org" and "secret"
And I go to "admin/myprofile" And I go to "admin/myprofile"
Scenario: I cannot remove all my admin groups Scenario: I cannot remove all my admin groups
When I click the "Admin group" option in the "DirectGroups" listbox When I click the "Admin group" option in the "DirectGroups" listbox
@ -24,39 +24,39 @@ Feature: Manage my own settings
Then I should see a "Saved" notice Then I should see a "Saved" notice
And I should not see "Cannot remove all admin groups from your profile" in the "#Form_EditForm" element And I should not see "Cannot remove all admin groups from your profile" in the "#Form_EditForm" element
Scenario: I can edit my personal details Scenario: I can edit my personal details
Given I fill in "First Name" with "Jack" Given I fill in "First Name" with "Jack"
And I fill in "Surname" with "Johnson" And I fill in "Surname" with "Johnson"
And I fill in "Email" with "jack@test.com" And I fill in "Email" with "jack@example.org"
When I press the "Save" button When I press the "Save" button
Given I go to "admin/myprofile" Given I go to "admin/myprofile"
Then I should not see "Joe" Then I should not see "Joe"
Then I should see "Jack" Then I should see "Jack"
And I should see "Johnson" And I should see "Johnson"
Scenario: I can't reset the password without the original Scenario: I can't reset the password without the original
Given I follow "Change Password" Given I follow "Change Password"
And I fill in "Current Password" with "idontknow" And I fill in "Current Password" with "idontknow"
And I fill in "New Password" with "newsecret" And I fill in "New Password" with "newsecret"
And I fill in "Confirm Password" with "newsecret" And I fill in "Confirm Password" with "newsecret"
And I press the "Save" button And I press the "Save" button
Then I should see "The current password you have entered is not correct." Then I should see "The current password you have entered is not correct."
Scenario: I can change my password Scenario: I can change my password
Given I follow "Change Password" Given I follow "Change Password"
And I fill in "Current Password" with "secret" And I fill in "Current Password" with "secret"
And I fill in "New Password" with "newsecret" And I fill in "New Password" with "newsecret"
And I fill in "Confirm Password" with "newsecret" And I fill in "Confirm Password" with "newsecret"
And I press the "Save" button And I press the "Save" button
And I am not logged in And I am not logged in
When I log in with "joe@test.com" and "newsecret" When I log in with "joe@example.org" and "newsecret"
And I go to "admin/myprofile" And I go to "admin/myprofile"
Then I should see the CMS Then I should see the CMS
Scenario: I can change the interface language Scenario: I can change the interface language
And I select "German (Germany)" from "Interface Language" And I select "German (Germany)" from "Interface Language"
And I press the "Save" button And I press the "Save" button
Then I should see "Sprache" Then I should see "Sprache"
# TODO Date/time format - Difficult because its not exposed anywhere in the CMS? # TODO Date/time format - Difficult because its not exposed anywhere in the CMS?
# TODO Group modification as ADMIN user # TODO Group modification as ADMIN user

View File

@ -6,7 +6,7 @@ Feature: Manage Security Permissions for Groups
Background: Background:
Given a "group" "test group" Given a "group" "test group"
And a "member" "ADMIN" belonging to "ADMIN group" with "Email"="admin@test.com" And a "member" "ADMIN" belonging to "ADMIN group" with "Email"="admin@example.org"
And the "group" "ADMIN group" has permissions "Full administrative rights" And the "group" "ADMIN group" has permissions "Full administrative rights"
And I am logged in with "ADMIN" permissions And I am logged in with "ADMIN" permissions
And I go to "/admin/security" And I go to "/admin/security"

View File

@ -374,7 +374,7 @@ JS;
public function assertIShouldNotSeeTheGridFieldButtonForRow($buttonLabel, $gridFieldName, $rowName) public function assertIShouldNotSeeTheGridFieldButtonForRow($buttonLabel, $gridFieldName, $rowName)
{ {
$button = $this->getGridFieldButton($gridFieldName, $rowName, $buttonLabel); $button = $this->getGridFieldButton($gridFieldName, $rowName, $buttonLabel);
assertNull($button, sprintf('Button "%s" not found', $buttonLabel)); assertNull($button, sprintf('Button "%s" found', $buttonLabel));
} }
/** /**