CustomerGroup#

NAME#

Kernel::System::CustomerGroup - customer group lib

DESCRIPTION#

All customer group functions. E. g. to add groups or to get a member list of a group.

PUBLIC INTERFACE#

new()#

Don’t use the constructor directly, use the ObjectManager instead:

my $CustomerGroupObject = $Kernel::OM->Get('Kernel::System::CustomerGroup');

GroupMemberAdd()#

to add a member to a group

Permission: ro,move_into,priority,create,rw

my $Success = $CustomerGroupObject->GroupMemberAdd(
    GID => 12,
    UID => 6,
    Permission => {
        ro        => 1,
        move_into => 1,
        create    => 1,
        owner     => 1,
        priority  => 0,
        rw        => 0,
    },
    UserID => 123,
);

GroupMemberList()#

Get users of the given group.

my %Users = $CustomerGroupObject->GroupMemberList(
    GroupID        => '123',
    Type           => 'move_into', # ro|move_into|priority|create|rw
    Result         => 'HASH',      # return hash of user id => user name entries
    RawPermissions => 0,           # 0 (return inherited permissions from CustomerCompany), default
                                   # 1 (return only direct permissions)
);

or

my @UserIDs = $CustomerGroupObject->GroupMemberList(
    GroupID        => '123',
    Type           => 'move_into', # ro|move_into|priority|create|rw
    Result         => 'ID',        # return array of user ids
    RawPermissions => 0,           # 0 (return inherited permissions from CustomerCompany), default
                                   # 1 (return only direct permissions)
);

or

my @UserNames = $CustomerGroupObject->GroupMemberList(
    GroupID        => '123',
    Type           => 'move_into', # ro|move_into|priority|create|rw
    Result         => 'Name',        # return array of user names
    RawPermissions => 0,           # 0 (return inherited permissions from CustomerCompany), default
                                   # 1 (return only direct permissions)
);

Get groups of given user.

my %Groups = $CustomerGroupObject->GroupMemberList(
    UserID         => '123',
    Type           => 'move_into', # ro|move_into|priority|create|rw
    Result         => 'HASH',      # return hash of group id => group name entries
    RawPermissions => 0,           # 0 (return inherited permissions from CustomerCompany), default
                                   # 1 (return only direct permissions)
);

or

my @GroupIDs = $CustomerGroupObject->GroupMemberList(
    UserID         => '123',
    Type           => 'move_into', # ro|move_into|priority|create|rw
    Result         => 'ID',        # return array of group ids
    RawPermissions => 0,           # 0 (return inherited permissions from CustomerCompany), default
                                   # 1 (return only direct permissions)
);

or

my @GroupNames = $CustomerGroupObject->GroupMemberList(
    UserID         => '123',
    Type           => 'move_into', # ro|move_into|priority|create|rw
    Result         => 'Name',        # return array of group names
    RawPermissions => 0,           # 0 (return inherited permissions from CustomerCompany), default
                                   # 1 (return only direct permissions)
);

GroupCustomerAdd()#

to add a customer to a group

Permission types: e.g. ro,move_into,priority,create,rw
Permission context: e.g. Ticket::CustomerID::Same, Ticket::CustomerID::Other

my $Success = $CustomerGroupObject->GroupCustomerAdd(
    GID        => 12,
    CustomerID => 'customer-company',
    Permission => {
        'Ticket::CustomerID::Same' => {
            ro            => 1,
            move_into     => 1,
            create        => 1,
            owner         => 1,
            priority      => 0,
            rw            => 0,
        },
        'Ticket::CustomerID::Other' => {
            ro        => 1,
            move_into => 1,
            create    => 1,
            owner     => 1,
            priority  => 0,
            rw        => 0,
        },
        # ...
    },
    UserID => 123,
);

GroupCustomerList()#

Get customers of the given group.

my %Customers = $CustomerGroupObject->GroupCustomerList(
    GroupID => '123',
    Type    => 'ro',    # ro|move_into|priority|create|owner|rw
    Context => 'Ticket::CustomerID::Same',
                        # permissions to same company tickets, default context
    Result  => 'HASH',  # return hash of customer id => group name entries
);

or

my @CustomerIDs = $CustomerGroupObject->GroupCustomerList(
    GroupID => '123',
    Type    => 'ro',    # ro|move_into|priority|create|owner|rw
    Context => 'Ticket::CustomerID::Same',
                        # permissions to same company tickets, default context
    Result  => 'ID',    # return array of customer ids
);

or

my @CustomerNames = $CustomerGroupObject->GroupCustomerList(
    GroupID => '123',
    Type    => 'ro',    # ro|move_into|priority|create|owner|rw
    Context => 'Ticket::CustomerID::Same',
                        # permissions to same company tickets, default context
    Result  => 'Name',  # return array of customer ids
);

Get groups of given customer.

my %Groups = $CustomerGroupObject->GroupCustomerList(
    CustomerID => '123',
    Type       => 'ro',     # ro|move_into|priority|create|owner|rw
    Context => 'Ticket::CustomerID::Same',
                        # permissions to same company tickets, default context
    Result     => 'HASH',   # return hash of group id => group name entries
);

or

my @GroupIDs = $CustomerGroupObject->GroupCustomerList(
    CustomerID => '123',
    Type       => 'ro',     # ro|move_into|priority|create|owner|rw
    Context => 'Ticket::CustomerID::Same',
                        # permissions to same company tickets, default context
    Result     => 'ID',     # return array of group ids
);

or

my @GroupNames = $CustomerGroupObject->GroupCustomerList(
    CustomerID => '123',
    Type       => 'ro',     # ro|move_into|priority|create|owner|rw
    Context => 'Ticket::CustomerID::Same',
                        # permissions to same company tickets, default context
    Result     => 'Name',   # return array of group names
);

GroupContextNameGet()#

Helper function to get currently configured name of a specific group access context

my $ContextName = $CustomerGroupObject->GroupContextNameGet(
    SysConfigName => '100-CustomerID-other', # optional, defaults to '001-CustomerID-same'
);

GroupContextNameList()#

Helper function to get the names of all configured group access contexts

my @ContextNames = $CustomerGroupObject->GroupContextNameList();

GroupContextCustomers()#

Get all customer companies of the given customer user, including those associated via context based permissions.

my %Customers = $CustomerGroupObject->GroupContextCustomers(
    CustomerUserID => '123',
);

Returns hash with Customer IDs as key and Customer Company Name as value:

%Customers = {
  '001' => 'Customer Company 1',
  '002' => 'Customer Company 2',
};

GroupLookup()#

get id or name for group

my $Group = $CustomerGroupObject->GroupLookup(GroupID => $GroupID);

my $GroupID = $CustomerGroupObject->GroupLookup(Group => $Group);

PermissionCheck()#

Check if a customer user has a certain permission for a certain group.

my $HasPermission = $CustomerGroupObject->PermissionCheck(
    UserID    => $UserID,
    GroupName => $GroupName,
    Type      => 'move_into',
);