WebSite X5Help Center

 
Franco F.
Franco F.
User

User management  en

Author: Franco F.
Visited 1740, Followers 2, Shared 0  

Hi everybody. I'd like to understand ho to make ma wesite main menu to be responsive by the group that belong to the user actually logged.

I've followed the example in here, that can helping me into making the user menu as a dropdown list that can be enougth to me (and leave the normal pages of the site to be driven by the standard menu).

The only point with that is that i cannot recognize the user group of the user. I would not basic user to see menu of the advanced one.

Posted on the
5 ANSWERS - 1 CORRECT
Aleksej H.
Aleksej H.
Moderator

Hello.There is currently no way to hide objects depending on the user group.You can allow access for certain groups of users to certain pages.

Read more
Posted on the from Aleksej H.
Esahc ..
Esahc ..
Moderator

Franco, further to what Aleksej correctly stated, you could have a locked page to which only appropriate groups get access, and on that page add a menu object starting at a (hidden) level under which all the user pages have been placed. Until a user logged in to see that page the menu would not be visible.

Read more
Posted on the from Esahc ..
Franco F.
Franco F.
User
Author

So, what is exactly the group that is retrieved by that function (in x5engine.php)?

I've displayed into a page and i so is something coded.

public function getUserByUsername($username)
    {
        $imSettings = Configuration::getSettings();        // Search in the file
        if (isset($imSettings['access']['users'][$username])) {
            $user = $imSettings['access']['users'][$username];
            return array(
                "id"        => $user['id'],
                ...
                "validated" => true,
                "groups"    => $user['groups'],
                "hash"      => $this->_getUserHash($username, $user['password'])
            );
        }
        // Search in the DB
        if ($this->db) {
            $res = $this->db->query("SELECT * FROM `" . $this->db_table . "` WHERE `email`='" . $this->db->escapeString($username) . "'");
            if (is_array($res) && count($res) > 0) {
                $user = $res[0];
                return array(
                    "id"        => $user['id'],
                    ..
                    "validated" => $user['validated'],
                    "groups"    => array($imSettings['access']['webregistrations_gid']),
                    "hash"      => $this->_getUserHash($user['email'], $user['password'])
                );
            }
        }
        return null;
    }

By checking x5engine.php i've found this function:

public function checkAccess($page)

Is there ANY way to get the id number of certain pages?

What if i set 3 hidden pages for the 3 type of level of user and by this function i can know if the actual user belong to any of those level, so i will know which level is the user?!

I just saw that page ID is compiled runtime, so i think it can dinamically change between download!

Read more
Posted on the from Franco F.
Franco F.
Franco F.
User
Author

It works. 

By using checkAccess($page) i can indirectly recognize the user level. Now it just miss how to recognize automatically the page id of a specific page.

Read more
Posted on the from Franco F.
Esahc ..
Esahc ..
Moderator

Suddenly I am out of my depth.

Good luck playing with code.

Read more
Posted on the from Esahc ..