Core/Security/User/UserHandler.php
public function loadUser(User $user)
    {
        // Guests do not have a user id. So do not try to load data for guests.
        if ($user->isGuest()) {
            return;
        }

        $this->db->qb([
            'table' => $this->table,
            'field' => [
                'username',
                'display_name',
                'state'
            ],
            'filter' => 'id_user=:id_user',
            'params' => [
                ':id_user' => $user->getId()
            ]
        ]);

        $data = $this->db->single();

        if (!empty($data)) {

            $user->setUsername($data['username']);

            // Use username as display_name when there is no display_name for this user
            $user->setDisplayName(empty($data['display_name']) ? $data['username'] : $data['display_name']);

            // Load the groups the user is in
            $this->db->qb([
                'table' => 'core_users_groups',
                'fields' => 'id_group',
                'filter' => 'id_user=:id_user',
                'params' => [
                    ':id_user' => $user->getId()
                ]
            ]);

            $groups = $this->db->column();

            if (!empty($groups)) {

                $user->groups->set($groups);

                // Create a prepared string and param array to use in query
                $prepared = $this->db->prepareArrayQuery('group', $groups);

                // Get and return the permissions
                $this->db->qb([
                    'table' => 'core_groups_permissions',
                    'fields' => [
                        'storage',
                        'permission'
                    ],
                    'method' => 'SELECT DISTINCT',
                    'filter' => 'id_group IN (' . $prepared['sql'] . ')',
                    'params' => $prepared['values']
                ]);

                $permissions = $this->db->all();

                foreach ($permissions as $perm) {

                    if (!array_key_exists($perm['storage'], $user->permissions)) {
                        $user->permissions[$perm['storage']] = new UserPermissions();
                    }

                    $user->permissions[$perm['storage']]->add($perm['permission']);
                }

                // Is the user an admin?
                if (!empty($user->permissions['Core']->allowedTo('admin'))) {
                    $user->setAdmin(true);
                }
            }
        }
    }
public function loadUser(User $user)
    {
        // Guests do not have a user id. So do not try to load data for guests.
        if ($user->isGuest()) {
            return;
        }

        $this->db->qb([
            'table' => $this->table,
            'field' => [
                'username',
                'display_name',
                'state'
            ],
            'filter' => 'id_user=:id_user',
            'params' => [
                ':id_user' => $user->getId()
            ]
        ]);

        $data = $this->db->single();

        if (!empty($data)) {

            $user->setUsername($data['username']);

            // Use username as display_name when there is no display_name for this user
            $user->setDisplayName(empty($data['display_name']) ? $data['username'] : $data['display_name']);

            // Load the groups the user is in
            $this->db->qb([
                'table' => 'core_users_groups',
                'fields' => 'id_group',
                'filter' => 'id_user=:id_user',
                'params' => [
                    ':id_user' => $user->getId()
                ]
            ]);

            $groups = $this->db->column();

            if (!empty($groups)) {

                $user->groups->set($groups);

                // Create a prepared string and param array to use in query
                $prepared = $this->db->prepareArrayQuery('group', $groups);

                // Get and return the permissions
                $this->db->qb([
                    'table' => 'core_groups_permissions',
                    'fields' => [
                        'storage',
                        'permission'
                    ],
                    'method' => 'SELECT DISTINCT',
                    'filter' => 'id_group IN (' . $prepared['sql'] . ')',
                    'params' => $prepared['values']
                ]);

                $permissions = $this->db->all();

                foreach ($permissions as $perm) {

                    if (!array_key_exists($perm['storage'], $user->permissions)) {
                        $user->permissions[$perm['storage']] = new UserPermissions();
                    }

                    $user->permissions[$perm['storage']]->add($perm['permission']);
                }

                // Is the user an admin?
                if (!empty($user->permissions['Core']->allowedTo('admin'))) {
                    $user->setAdmin(true);
                }
            }
        }
    }
public function loadUser ( User $ user ) { // Guests do not have a user id. So do not try to load data for guests. if ( $ user -> isGuest ( ) ) { return ; } $ this -> db -> qb ( [ 'table' => $ this -> table , 'field' => [ 'username' , 'display_name' , 'state' ] , 'filter' => 'id_user=:id_user' , 'params' => [ ':id_user' => $ user -> getId ( ) ] ] ) ; $ data = $ this -> db -> single ( ) ; if ( ! empty ( $ data ) ) { $ user -> setUsername ( $ data [ 'username' ] ) ; // Use username as display_name when there is no display_name for this user $ user -> setDisplayName ( empty ( $ data [ 'display_name' ] ) ? $ data [ 'username' ] : $ data [ 'display_name' ] ) ; // Load the groups the user is in $ this -> db -> qb ( [ 'table' => 'core_users_groups' , 'fields' => 'id_group' , 'filter' => 'id_user=:id_user' , 'params' => [ ':id_user' => $ user -> getId ( ) ] ] ) ; $ groups = $ this -> db -> column ( ) ; if ( ! empty ( $ groups ) ) { $ user -> groups -> set ( $ groups ) ; // Create a prepared string and param array to use in query $ prepared = $ this -> db -> prepareArrayQuery ( 'group' , $ groups ) ; // Get and return the permissions $ this -> db -> qb ( [ 'table' => 'core_groups_permissions' , 'fields' => [ 'storage' , 'permission' ] , 'method' => 'SELECT DISTINCT' , 'filter' => 'id_group IN (' . $ prepared [ 'sql' ] . ')' , 'params' => $ prepared [ 'values' ] ] ) ; $ permissions = $ this -> db -> all ( ) ; foreach ( $ permissions as $ perm ) { if ( ! array_key_exists ( $ perm [ 'storage' ] , $ user -> permissions ) ) { $ user -> permissions [ $ perm [ 'storage' ] ] = new UserPermissions ( ) ; } $ user -> permissions [ $ perm [ 'storage' ] ] -> add ( $ perm [ 'permission' ] ) ; } // Is the user an admin? if ( ! empty ( $ user -> permissions [ 'Core' ] -> allowedTo ( 'admin' ) ) ) { $ user -> setAdmin ( true ) ; } } } }
Loads user from DB.

Takes care about not to load a user more than once

@param User $user
Loads user from DB .