diff --git a/developer_manual/app/users.rst b/developer_manual/app/users.rst index 304b5901f..77c6b2958 100644 --- a/developer_manual/app/users.rst +++ b/developer_manual/app/users.rst @@ -2,4 +2,171 @@ User & Session Management ========================= -.. sectionauthor:: Bernhard Posselt \ No newline at end of file +.. sectionauthor:: Bernhard Posselt + +Users can be managed using the UserManager which is injected from the ServerContainer: + +.. code-block:: php + + getContainer(); + + /** + * Controllers + */ + $container->registerService('UserService', function($c) { + return new UserService( + $c->query('UserManager') + ); + }); + + $container->registerService('UserManager', function($c) { + return $c->query('ServerContainer')->getUserManager(); + }); + } + } + + + +Creating users +============== +Creating a user is done by passing a username and password to the create method: + +.. code-block:: php + + userManager = $userManager; + } + + public function create($userId, $password) { + return $this->userManager->create($userId, $password); + } + + } + +Modifying users +=============== +Users can be modified by getting a user by the userId or by a search pattern. The returned user objects can then be used to: + +* Delete them +* Set a new password +* Disable/Enable them +* Get their home directory + +.. code-block:: php + + userManager = $userManager; + } + + public function delete($userId) { + return $this->userManager->get($userId)->delete(); + } + + // recoveryPassword is used for the encryption app to recover the keys + public function setPassword($userId, $password, $recoveryPassword) { + return $this->userManager->get($userId)->setPassword($password, $recoveryPassword); + } + + public function disable($userId) { + return $this->userManager->get($userId)->setEnabled(false); + } + + public function getHome($userId) { + return $this->userManager->get($userId)->getHome(); + } + } + +Session Information +=================== +To login, logout or getting the currently logged in user, the Session has to be injected from the ServerContainer: + +.. code-block:: php + + getContainer(); + + /** + * Controllers + */ + $container->registerService('UserService', function($c) { + return new UserService( + $c->query('Session') + ); + }); + + $container->registerService('Session', function($c) { + return $c->query('ServerContainer')->getSession(); + }); + + // currently logged in user, userId can be gotten by calling the + // getUID() method on it + $container->registerService('User', function($c) { + return $c->query('Session')->getUser(); + }); + } + } + + +Then users can be logged in by using: + +.. code-block:: php + + session = $session; + } + + public function login($userId, $password) { + return $this->session->login($userId, $password); + } + + public function logout() { + $this->session->logout(); + } + + } \ No newline at end of file