User management
Users can be managed using the UserManager which is injected from the ServerContainer:
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:
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
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:
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:
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
();