CustomerUser#

NAME#

Kernel::System::CustomerUser - customer user lib

DESCRIPTION#

All customer user functions. E. g. to add and update customer users.

PUBLIC INTERFACE#

new()#

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

my $CustomerUserObject = $Kernel::OM->Get('Kernel::System::CustomerUser');

CustomerSourceList()#

return customer source list

my %List = $CustomerUserObject->CustomerSourceList(
    ReadOnly => 0 # optional, 1 returns only RO backends, 0 returns writable, if not passed returns all backends
);

CustomerSearch()#

to search users

# text search
my %List = $CustomerUserObject->CustomerSearch(
    Search => '*some*', # also 'hans+huber' possible
    Valid  => 1,        # (optional) default 1
    Limit  => 100,      # (optional) overrides limit of the config
);

# username search
my %List = $CustomerUserObject->CustomerSearch(
    UserLogin => '*some*',
    Valid     => 1,         # (optional) default 1
);

# email search
my %List = $CustomerUserObject->CustomerSearch(
    PostMasterSearch => 'email@example.com',
    Valid            => 1,                    # (optional) default 1
);

# search by CustomerID
my %List = $CustomerUserObject->CustomerSearch(
    CustomerID       => 'CustomerID123',
    Valid            => 1,                # (optional) default 1
);

CustomerSearchDetail()#

To find customer user in the system.

The search criteria are logically AND connected. When a list is passed as criteria, the individual members are OR connected. When an undef or a reference to an empty array is passed, then the search criteria is ignored.

Returns either a list, as an arrayref, or a count of found customer user ids. The count of results is returned when the parameter Result = 'COUNT' is passed.

my $CustomerUserIDsRef = $CustomerUserObject->CustomerSearchDetail(

    # all search fields possible which are defined in CustomerUser::EnhancedSearchFields
    UserLogin     => 'example*',                                    # (optional)
    UserFirstname => 'Firstn*',                                     # (optional)

    # special parameters
    CustomerCompanySearchCustomerIDs => [ 'example.com' ],          # (optional)
    ExcludeUserLogins                => [ 'example', 'doejohn' ],   # (optional)

    # array parameters are used with logical OR operator (all values are possible which
    are defined in the config selection hash for the field)
    UserCountry              => [ 'Austria', 'Germany', ],          # (optional)

    # DynamicFields
    #   At least one operator must be specified. Operators will be connected with AND,
    #       values in an operator with OR.
    #   You can also pass more than one argument to an operator: ['value1', 'value2']
    DynamicField_FieldNameX => {
        Equals            => 123,
        Like              => 'value*',                # "equals" operator with wildcard support
        GreaterThan       => '2001-01-01 01:01:01',
        GreaterThanEquals => '2001-01-01 01:01:01',
        SmallerThan       => '2002-02-02 02:02:02',
        SmallerThanEquals => '2002-02-02 02:02:02',
    }

    OrderBy => [ 'UserLogin', 'UserCustomerID' ],                   # (optional)
    # ignored if the result type is 'COUNT'
    # default: [ 'UserLogin' ]
    # (all search fields possible which are defined in
    CustomerUser::EnhancedSearchFields)

    # Additional information for OrderBy:
    # The OrderByDirection can be specified for each OrderBy attribute.
    # The pairing is made by the array indices.

    OrderByDirection => [ 'Down', 'Up' ],                          # (optional)
    # ignored if the result type is 'COUNT'
    # (Down | Up) Default: [ 'Down' ]

    Result => 'ARRAY' || 'COUNT',                                  # (optional)
    # default: ARRAY, returns an array of change ids
    # COUNT returns a scalar with the number of found changes

    Limit => 100,                                                  # (optional)
    # ignored if the result type is 'COUNT'
);

Returns:

Result: ‘ARRAY’

@CustomerUserIDs = ( 1, 2, 3 );

Result: ‘COUNT’

$CustomerUserIDs = 10;

CustomerUserSearchFields()#

Get a list of the defined search fields (optional only the relevant fields for the given source).

my @SeachFields = $CustomerUserObject->CustomerUserSearchFields(
    Source => 'CustomerUser', # optional, but important in the CustomerSearchDetail to get the right database fields
);

Returns an array of hash references.

@SeachFields = (
    {
        Name          => 'UserEmail',
        Label         => 'Email',
        Type          => 'Input',
        DatabaseField => 'mail',
    },
    {
        Name           => 'UserCountry',
        Label          => 'Country',
        Type           => 'Selection',
        SelectionsData => {
            'Germany'        => 'Germany',
            'United Kingdom' => 'United Kingdom',
            'United States'  => 'United States',
            # ...
        },
        DatabaseField => 'country',
    },
    {
        Name          => 'DynamicField_SkypeAccountName',
        Label         => '',
        Type          => 'DynamicField',
        DatabaseField => 'SkypeAccountName',
    },
);

GetFieldConfig()#

This function collect some field config information from the customer user map.

my %FieldConfig = $CustomerUserObject->GetFieldConfig(
    FieldName => 'UserEmail',
    Source    => 'CustomerUser', # optional
);

Returns some field config information:

my %FieldConfig = (
    Label         => 'Email',
    DatabaseField => 'email',
    StorageType   => 'var',
);

GetFieldSelections()#

This function collect the selections for the given field name, if the field has some selections.

my %SelectionsData = $CustomerUserObject->GetFieldSelections(
    FieldName => 'UserTitle',
);

Returns the selections for the given field name (merged from all sources) or a empty hash:

my %SelectionData = (
    'Mr.'  => 'Mr.',
    'Mrs.' => 'Mrs.',
);

CustomerIDList()#

return a list of all known unique CustomerIDs of the registered customer users (no SearchTerm), or a filtered list where the CustomerIDs must contain a search term.

my @CustomerIDs = $CustomerUserObject->CustomerIDList(
    SearchTerm  => 'somecustomer',    # optional
    Valid       => 1,                 # optional
);

CustomerName()#

get customer user name

my $Name = $CustomerUserObject->CustomerName(
    UserLogin => 'some-login',
);

CustomerIDs()#

get customer user customer ids

my @CustomerIDs = $CustomerUserObject->CustomerIDs(
    User => 'some-login',
);

CustomerUserDataGet()#

get user data (UserLogin, UserFirstname, UserLastname, UserEmail, …)

my %User = $CustomerUserObject->CustomerUserDataGet(
    User => 'franz',
);

CustomerUserAdd()#

to add new customer users

my $UserLogin = $CustomerUserObject->CustomerUserAdd(
    Source         => 'CustomerUser', # CustomerUser source config
    UserFirstname  => 'Huber',
    UserLastname   => 'Manfred',
    UserCustomerID => 'A124',
    UserLogin      => 'mhuber',
    UserPassword   => 'some-pass',          # not required
    UserEmail      => 'email@example.com',
    ValidID        => 1,
    UserID         => 123,
);

CustomerUserUpdate()#

to update customer users

$CustomerUserObject->CustomerUserUpdate(
    Source        => 'CustomerUser',        # CustomerUser source config
    ID            => 'mh',                  # current user login
    UserLogin     => 'mhuber',              # new user login
    UserFirstname => 'Huber',
    UserLastname  => 'Manfred',
    UserPassword  => 'some-pass',           # not required
    UserEmail     => 'email@example.com',
    ValidID       => 1,
    UserID        => 123,
);

SetPassword()#

to set customer users passwords

$CustomerUserObject->SetPassword(
    UserLogin => 'some-login',
    PW        => 'some-new-password',
);

GenerateRandomPassword()#

generate a random password

my $Password = $CustomerUserObject->GenerateRandomPassword();

or

my $Password = $CustomerUserObject->GenerateRandomPassword(
    Size => 16,
);

SetPreferences()#

set customer user preferences

$CustomerUserObject->SetPreferences(
    Key    => 'UserComment',
    Value  => 'some comment',
    UserID => 'some-login',
);

GetPreferences()#

get customer user preferences

my %Preferences = $CustomerUserObject->GetPreferences(
    UserID => 'some-login',
);

SearchPreferences()#

search in user preferences

my %UserList = $CustomerUserObject->SearchPreferences(
    Key   => 'UserSomeKey',
    Value => 'SomeValue',   # optional, limit to a certain value/pattern
);

TokenGenerate()#

generate a random token

my $Token = $CustomerUserObject->TokenGenerate(
    UserID => 123,
);

TokenCheck()#

check password token

my $Valid = $CustomerUserObject>TokenCheck(
    Token  => $Token,
    UserID => 123,
);

CustomerUserCacheClear()#

clear cache of customer user data

$CustomerUserObject->CustomerUserCacheClear(
    UserLogin => 'mhuber',
);

CustomerUserCustomerMemberAdd()#

to add a customer user to a customer

my $Success = $CustomerUserObject->CustomerUserCustomerMemberAdd(
    CustomerUserID => 123,
    CustomerID     => 123,
    Active         => 1,        # optional
    UserID         => 123,
);

CustomerUserCustomerMemberList()#

get related customer IDs of a customer user

my @CustomerIDs = $CustomerUserObject->CustomerUserCustomerMemberList(
    CustomerUserID => 123,
);
Returns:
@CustomerIDs = (

‘123’, ‘456’,

);

get related customer users of a customer ID

my @CustomerUsers = $CustomerUserObject->CustomerUserCustomerMemberList(
    CustomerID => 123,
);
Returns:
@CustomerUsers = (

‘123’, ‘456’,

);