1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95  96  97  98  99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 
<?php

/* --------------------------------------------------------------
   AdminAccessUserInterface.inc.php 2017-09-21
   Gambio GmbH
   http://www.gambio.de
   Copyright (c) 2017 Gambio GmbH
   Released under the GNU General Public License (Version 2)
   [http://www.gnu.org/licenses/gpl-2.0.html]
   --------------------------------------------------------------
*/

/**
 * Interface AdminAccessUserInterface
 *
 * @category   System
 * @package    AdminAccess
 * @subpackage Entities
 */
interface AdminAccessUserInterface
{
    /**
     * AdminAccessUser constructor.
     *
     * @param AdminAccessUserWriterInterface  $writer      User writer.
     * @param AdminAccessUserDeleterInterface $userDeleter User deleter.
     * @param IdType                          $customerId  User id.
     * @param AdminAccessRoleCollection       $roles       User roles collection.
     */
    public function __construct(AdminAccessUserWriterInterface $writer,
                                AdminAccessUserDeleterInterface $userDeleter,
                                IdType $customerId,
                                AdminAccessRoleCollection $roles);
    
    
    /**
     * Returns the user id.
     *
     * @return int User ID.
     */
    public function getId();
    
    
    /**
     * Adds a role to this user.
     *
     * @param AdminAccessRoleInterface $role Role object.
     *
     * @return AdminAccessUserInterface Returns same instance for chained method calls.
     */
    public function addNewRole(AdminAccessRoleInterface $role);
    
    
    /**
     * Removes role from this user.
     *
     * @param AdminAccessRoleInterface $role Role object.
     *
     * @return AdminAccessUserInterface Returns same instance for chained method calls.
     */
    public function removeRole(AdminAccessRoleInterface $role);
    
    
    /**
     * Checks deleting permission for a given group.
     *
     * @param AdminAccessGroupInterface $group Group object.
     *
     * @return bool True if deleting permission is granted, false otherwise.
     */
    public function checkDeletingPermission(AdminAccessGroupInterface $group);
    
    
    /**
     * Checks reading permission for a given group.
     *
     * @param AdminAccessGroupInterface $group Group object.
     *
     * @return bool True if reading permission is granted, false otherwise.
     */
    public function checkReadingPermission(AdminAccessGroupInterface $group);
    
    
    /**
     * Checks writing permission for a given group.
     *
     * @param AdminAccessGroupInterface $group Group object.
     *
     * @return bool True if writing permission is granted, false otherwise.
     */
    public function checkWritingPermission(AdminAccessGroupInterface $group);
    
    
    /**
     * Checks deleting permission for an unknown group.
     *
     * @return bool True if deleting permission for an unknown group is granted, false otherwise.
     */
    public function checkDeletingPermissionForUnknownGroup();
    
    
    /**
     * Checks reading permission for an unknown group.
     *
     * @return bool True if reading permission for an unknown group is granted, false otherwise.
     */
    public function checkReadingPermissionForUnknownGroup();
    
    
    /**
     * Checks writing permission for an unknown group.
     *
     * @return bool True if writing permission for an unknown group is granted, false otherwise.
     */
    public function checkWritingPermissionForUnknownGroup();
    
    
    /**
     * Sets the customer ID.
     *
     * @param IdType $id Customer ID.
     *
     * @return AdminAccessUserInterface Returns same instance for chained method calls.
     */
    public function setCustomerId(IdType $id);
    
    
    /**
     * Sets the user roles.
     *
     * @param AdminAccessRoleCollection $roles Access roles collection.
     *
     * @return AdminAccessUserInterface Returns same instance for chained method calls.
     */
    public function setRoles(AdminAccessRoleCollection $roles);
    
    
    /**
     * Returns the user roles.
     *
     * @return AbstractCollection|AdminAccessRoleCollection Cloned roles collection.
     */
    public function getRoles();
    
    
    /**
     * Stores/Updates an user into/from the database.
     *
     * @return AdminAccessUserInterface Returns same instance for chained method calls.
     */
    public function update();
    
    
    /**
     * Deletes an user from the database.
     *
     * @return AdminAccessUserInterface Returns same instance for chained method calls.
     */
    public function delete();
}