@@ 1505-1531 (lines=27) @@ | ||
1502 | * Users can edit their own record. |
|
1503 | * Otherwise they'll need ADMIN or CMS_ACCESS_SecurityAdmin permissions |
|
1504 | */ |
|
1505 | public function canEdit($member = null) { |
|
1506 | //get member |
|
1507 | if(!($member instanceof Member)) { |
|
1508 | $member = Member::currentUser(); |
|
1509 | } |
|
1510 | //check for extensions, we do this first as they can overrule everything |
|
1511 | $extended = $this->extendedCan(__FUNCTION__, $member); |
|
1512 | if($extended !== null) { |
|
1513 | return $extended; |
|
1514 | } |
|
1515 | ||
1516 | //need to be logged in and/or most checks below rely on $member being a Member |
|
1517 | if(!$member) { |
|
1518 | return false; |
|
1519 | } |
|
1520 | ||
1521 | // HACK: we should not allow for an non-Admin to edit an Admin |
|
1522 | if(!Permission::checkMember($member, 'ADMIN') && Permission::checkMember($this, 'ADMIN')) { |
|
1523 | return false; |
|
1524 | } |
|
1525 | // members can usually edit their own record |
|
1526 | if($this->ID == $member->ID) { |
|
1527 | return true; |
|
1528 | } |
|
1529 | //standard check |
|
1530 | return Permission::checkMember($member, 'CMS_ACCESS_SecurityAdmin'); |
|
1531 | } |
|
1532 | /** |
|
1533 | * Users can edit their own record. |
|
1534 | * Otherwise they'll need ADMIN or CMS_ACCESS_SecurityAdmin permissions |
|
@@ 1536-1566 (lines=31) @@ | ||
1533 | * Users can edit their own record. |
|
1534 | * Otherwise they'll need ADMIN or CMS_ACCESS_SecurityAdmin permissions |
|
1535 | */ |
|
1536 | public function canDelete($member = null) { |
|
1537 | if(!($member instanceof Member)) { |
|
1538 | $member = Member::currentUser(); |
|
1539 | } |
|
1540 | //check for extensions, we do this first as they can overrule everything |
|
1541 | $extended = $this->extendedCan(__FUNCTION__, $member); |
|
1542 | if($extended !== null) { |
|
1543 | return $extended; |
|
1544 | } |
|
1545 | ||
1546 | //need to be logged in and/or most checks below rely on $member being a Member |
|
1547 | if(!$member) { |
|
1548 | return false; |
|
1549 | } |
|
1550 | // Members are not allowed to remove themselves, |
|
1551 | // since it would create inconsistencies in the admin UIs. |
|
1552 | if($this->ID && $member->ID == $this->ID) { |
|
1553 | return false; |
|
1554 | } |
|
1555 | ||
1556 | // HACK: if you want to delete a member, you have to be a member yourself. |
|
1557 | // this is a hack because what this should do is to stop a user |
|
1558 | // deleting a member who has more privileges (e.g. a non-Admin deleting an Admin) |
|
1559 | if(Permission::checkMember($this, 'ADMIN')) { |
|
1560 | if( ! Permission::checkMember($member, 'ADMIN')) { |
|
1561 | return false; |
|
1562 | } |
|
1563 | } |
|
1564 | //standard check |
|
1565 | return Permission::checkMember($member, 'CMS_ACCESS_SecurityAdmin'); |
|
1566 | } |
|
1567 | ||
1568 | /** |
|
1569 | * Validate this member object. |