| @@ 1558-1585 (lines=28) @@ | ||
| 1555 | * @param Member $member |
|
| 1556 | * @return bool |
|
| 1557 | */ |
|
| 1558 | public function canEdit($member = null) |
|
| 1559 | { |
|
| 1560 | //get member |
|
| 1561 | if (!$member) { |
|
| 1562 | $member = Security::getCurrentUser(); |
|
| 1563 | } |
|
| 1564 | //check for extensions, we do this first as they can overrule everything |
|
| 1565 | $extended = $this->extendedCan(__FUNCTION__, $member); |
|
| 1566 | if ($extended !== null) { |
|
| 1567 | return $extended; |
|
| 1568 | } |
|
| 1569 | ||
| 1570 | //need to be logged in and/or most checks below rely on $member being a Member |
|
| 1571 | if (!$member) { |
|
| 1572 | return false; |
|
| 1573 | } |
|
| 1574 | ||
| 1575 | // HACK: we should not allow for an non-Admin to edit an Admin |
|
| 1576 | if (!Permission::checkMember($member, 'ADMIN') && Permission::checkMember($this, 'ADMIN')) { |
|
| 1577 | return false; |
|
| 1578 | } |
|
| 1579 | // members can usually edit their own record |
|
| 1580 | if ($this->ID == $member->ID) { |
|
| 1581 | return true; |
|
| 1582 | } |
|
| 1583 | ||
| 1584 | //standard check |
|
| 1585 | return Permission::checkMember($member, 'CMS_ACCESS_SecurityAdmin'); |
|
| 1586 | } |
|
| 1587 | ||
| 1588 | /** |
|
| @@ 1595-1626 (lines=32) @@ | ||
| 1592 | * @param Member $member |
|
| 1593 | * @return bool |
|
| 1594 | */ |
|
| 1595 | public function canDelete($member = null) |
|
| 1596 | { |
|
| 1597 | if (!$member) { |
|
| 1598 | $member = Security::getCurrentUser(); |
|
| 1599 | } |
|
| 1600 | //check for extensions, we do this first as they can overrule everything |
|
| 1601 | $extended = $this->extendedCan(__FUNCTION__, $member); |
|
| 1602 | if ($extended !== null) { |
|
| 1603 | return $extended; |
|
| 1604 | } |
|
| 1605 | ||
| 1606 | //need to be logged in and/or most checks below rely on $member being a Member |
|
| 1607 | if (!$member) { |
|
| 1608 | return false; |
|
| 1609 | } |
|
| 1610 | // Members are not allowed to remove themselves, |
|
| 1611 | // since it would create inconsistencies in the admin UIs. |
|
| 1612 | if ($this->ID && $member->ID == $this->ID) { |
|
| 1613 | return false; |
|
| 1614 | } |
|
| 1615 | ||
| 1616 | // HACK: if you want to delete a member, you have to be a member yourself. |
|
| 1617 | // this is a hack because what this should do is to stop a user |
|
| 1618 | // deleting a member who has more privileges (e.g. a non-Admin deleting an Admin) |
|
| 1619 | if (Permission::checkMember($this, 'ADMIN')) { |
|
| 1620 | if (!Permission::checkMember($member, 'ADMIN')) { |
|
| 1621 | return false; |
|
| 1622 | } |
|
| 1623 | } |
|
| 1624 | ||
| 1625 | //standard check |
|
| 1626 | return Permission::checkMember($member, 'CMS_ACCESS_SecurityAdmin'); |
|
| 1627 | } |
|
| 1628 | ||
| 1629 | /** |
|