Files
nextcloud-docs/developer_manual/digging_deeper/users.rst
Christoph Wurst 2647cd93c7 Restructure the dev manual
This moves lots of pages around. The high-level changes are

* Better main sections, so it's more *general*, *into*, *basics* and *details*
* Move more general topics to a *Basic* section, which are not
  app-specific
* Remove app docs to the stuff that is likely used, anything else goes
  into "Digging deeper"
* Move general guides into a prologue
* Try to *compress*/combine some pages with similar content
* Try to have better consistencs on level ob abstraction across pages
* Split app development and maintenance pages into two sections
* Integrate bugtracker info into prologue
* Integrate Android pages into client APIs section

Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2020-06-22 18:35:59 +02:00

176 lines
4.1 KiB
ReStructuredText

===============
User management
===============
.. sectionauthor:: Bernhard Posselt <dev@bernhard-posselt.com>
Users can be managed using the UserManager which is injected from the ServerContainer:
.. code-block:: php
<?php
namespace OCA\MyApp\AppInfo;
use \OCP\AppFramework\App;
use \OCA\MyApp\Service\UserService;
class Application extends App {
public function __construct(array $urlParams=array()){
parent::__construct('myapp', $urlParams);
$container = $this->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
<?php
namespace OCA\MyApp\Service;
class UserService {
private $userManager;
public function __construct($userManager){
$this->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
<?php
namespace OCA\MyApp\Service;
class UserService {
private $userManager;
public function __construct($userManager){
$this->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();
}
}
User session information
------------------------
To login, logout or getting the currently logged in user, the UserSession has to be injected from the ServerContainer:
.. code-block:: php
<?php
namespace OCA\MyApp\AppInfo;
use \OCP\AppFramework\App;
use \OCA\MyApp\Service\UserService;
class Application extends App {
public function __construct(array $urlParams=array()){
parent::__construct('myapp', $urlParams);
$container = $this->getContainer();
/**
* Controllers
*/
$container->registerService('UserService', function($c) {
return new UserService(
$c->query('UserSession')
);
});
$container->registerService('UserSession', function($c) {
return $c->query('ServerContainer')->getUserSession();
});
// currently logged in user, userId can be gotten by calling the
// getUID() method on it
$container->registerService('User', function($c) {
return $c->query('UserSession')->getUser();
});
}
}
Then users can be logged in by using:
.. code-block:: php
<?php
namespace OCA\MyApp\Service;
class UserService {
private $userSession;
public function __construct($userSession){
$this->userSession = $userSession;
}
public function login($userId, $password) {
return $this->userSession->login($userId, $password);
}
public function logout() {
$this->userSession->logout();
}
}