Browse Source

Refinements to user manager

A greater effort is made to keep the internal database synchronized
rpm
J. King 4 years ago
parent
commit
dde9d7a28a
  1. 21
      lib/User.php
  2. 10
      lib/User/ExceptionNotImplemented.php

21
lib/User.php

@ -49,7 +49,12 @@ class User {
}
public function add($user, $password = null): string {
return $this->u->userAdd($user, $password) ?? $this->u->userAdd($user, $this->generatePassword());
$out = $this->u->userAdd($user, $password) ?? $this->u->userAdd($user, $this->generatePassword());
// synchronize the internal database
if (!Arsse::$db->userExists($user)) {
Arsse::$db->userAdd($user, $out);
}
return $out;
}
public function remove(string $user): bool {
@ -70,6 +75,9 @@ class User {
Arsse::$db->userPasswordSet($user, $out);
// also invalidate any current sessions for the user
Arsse::$db->sessionDestroy($user);
} else {
// if the user does not exist, add it with the new password
Arsse::$db->userAdd($user, $out);
}
return $out;
}
@ -81,6 +89,10 @@ class User {
Arsse::$db->userPasswordSet($user, null);
// also invalidate any current sessions for the user
Arsse::$db->sessionDestroy($user);
} else {
// if the user does not exist
Arsse::$db->userAdd($user, "");
Arsse::$db->userPasswordSet($user, null);
}
return $out;
}
@ -91,6 +103,10 @@ class User {
public function propertiesGet(string $user): array {
$extra = $this->u->userPropertiesGet($user);
// synchronize the internal database
if (!Arsse::$db->userExists($user)) {
Arsse::$db->userAdd($user, $this->generatePassword());
}
// unconditionally retrieve from the database to get at least the user number, and anything else the driver does not provide
$out = Arsse::$db->userPropertiesGet($user);
// layer on the driver's data
@ -125,6 +141,9 @@ class User {
}
$out = $this->u->userPropertiesSet($user, $in);
// synchronize the internal database
if (!Arsse::$db->userExists($user)) {
Arsse::$db->userAdd($user, $this->generatePassword());
}
Arsse::$db->userPropertiesSet($user, $out);
return $out;
}

10
lib/User/ExceptionNotImplemented.php

@ -1,10 +0,0 @@
<?php
/** @license MIT
* Copyright 2017 J. King, Dustin Wilson et al.
* See LICENSE and AUTHORS files for details */
declare(strict_types=1);
namespace JKingWeb\Arsse\User;
class ExceptionNotImplemented extends Exception {
}
Loading…
Cancel
Save