mirror of
https://github.com/typemill/typemill.git
synced 2025-08-09 07:36:34 +02:00
fix api for navigation, usermodel, usersearch
This commit is contained in:
@@ -14,7 +14,8 @@ class ControllerApiGlobals extends Controller
|
||||
$systemNavigation = $navigation->getSystemNavigation(
|
||||
$userrole = $request->getAttribute('c_userrole'),
|
||||
$acl = $this->c->get('acl'),
|
||||
$urlinfo = $this->c->get('urlinfo')
|
||||
$urlinfo = $this->c->get('urlinfo'),
|
||||
$dispatcher = $this->c->get('dispatcher')
|
||||
);
|
||||
|
||||
# won't work because api has no session, instead you have to pass user
|
||||
|
@@ -10,24 +10,26 @@ use Typemill\Static\Translations;
|
||||
|
||||
class ControllerApiSystemUsers extends Controller
|
||||
{
|
||||
# getCurrentUser
|
||||
# getUserByName
|
||||
|
||||
#returns userdata
|
||||
#returns userdata no in use???
|
||||
public function getUsersByNames(Request $request, Response $response, $args)
|
||||
{
|
||||
$usernames = $request->getQueryParams()['usernames'] ?? false;
|
||||
$user = new User();
|
||||
$userdata = [];
|
||||
|
||||
if($usernames)
|
||||
$validate = new Validation();
|
||||
|
||||
if($usernames && is_array($usernames))
|
||||
{
|
||||
foreach($usernames as $username)
|
||||
{
|
||||
$existinguser = $user->setUser($username);
|
||||
if($existinguser)
|
||||
if($validate->username(['username' => $username]))
|
||||
{
|
||||
$userdata[] = $user->getUserData();
|
||||
$existinguser = $user->setUser($username);
|
||||
if($existinguser)
|
||||
{
|
||||
$userdata[] = $user->getUserData();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -46,14 +48,20 @@ class ControllerApiSystemUsers extends Controller
|
||||
$user = new User();
|
||||
$userdata = [];
|
||||
|
||||
$usernames = $user->findUsersByEmail($email);
|
||||
$validate = new Validation();
|
||||
$valresult = $validate->emailsearch(['email' => $email]);
|
||||
|
||||
if($usernames)
|
||||
if($valresult)
|
||||
{
|
||||
foreach($usernames as $username)
|
||||
$usernames = $user->findUsersByEmail($email);
|
||||
|
||||
if($usernames)
|
||||
{
|
||||
$user->setUser($username);
|
||||
$userdata[] = $user->getUserData();
|
||||
foreach($usernames as $username)
|
||||
{
|
||||
$user->setUser($username);
|
||||
$userdata[] = $user->getUserData();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -71,14 +79,21 @@ class ControllerApiSystemUsers extends Controller
|
||||
$user = new User();
|
||||
$userdata = [];
|
||||
|
||||
$usernames = $user->findUsersByRole($role);
|
||||
$userroles = $this->c->get('acl')->getRoles();
|
||||
|
||||
if($usernames)
|
||||
if($role && in_array($role, $userroles))
|
||||
{
|
||||
foreach($usernames as $username)
|
||||
$usernames = $user->findUsersByRole($role);
|
||||
|
||||
if($usernames)
|
||||
{
|
||||
$user->setUser($username);
|
||||
$userdata[] = $user->getUserData();
|
||||
foreach($usernames as $username)
|
||||
{
|
||||
if($user->setUser($username))
|
||||
{
|
||||
$userdata[] = $user->getUserData();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -119,8 +119,10 @@ class ApiAuthentication
|
||||
|
||||
$response = new Response();
|
||||
|
||||
$response->getBody()->write('Access not allowed.');
|
||||
|
||||
$response->getBody()->write(json_encode([
|
||||
'message' => 'Authentication required.'
|
||||
]));
|
||||
|
||||
return $response->withStatus(401);
|
||||
}
|
||||
}
|
@@ -217,7 +217,7 @@ class User
|
||||
}
|
||||
}
|
||||
|
||||
public function generatePassword($password)
|
||||
public function generatePassword(string $password)
|
||||
{
|
||||
return \password_hash($password, PASSWORD_DEFAULT, ['cost' => 10]);
|
||||
}
|
||||
@@ -232,7 +232,7 @@ class User
|
||||
*/
|
||||
|
||||
# accepts email with or without asterix and returns userdata
|
||||
public function findUsersByEmail($email)
|
||||
public function findUsersByEmail(string $email)
|
||||
{
|
||||
$usernames = [];
|
||||
|
||||
@@ -269,7 +269,7 @@ class User
|
||||
}
|
||||
}
|
||||
|
||||
private function searchEmailSimple($usernames, $email)
|
||||
private function searchEmailSimple(array $usernames, string $email)
|
||||
{
|
||||
foreach($usernames as $username)
|
||||
{
|
||||
@@ -284,7 +284,7 @@ class User
|
||||
return false;
|
||||
}
|
||||
|
||||
private function searchEmailByIndex($email)
|
||||
private function searchEmailByIndex(string $email)
|
||||
{
|
||||
# if there are more than 10 users, search with an index
|
||||
$usermails = $this->getUserMailIndex();
|
||||
@@ -388,7 +388,9 @@ class User
|
||||
|
||||
foreach($usernames as $username)
|
||||
{
|
||||
$userdata = $this->getSecureUser($username);
|
||||
|
||||
$this->setUser($username);
|
||||
$userdata = $this->getUserData();
|
||||
|
||||
$userroleindex[$userdata['userrole']][] = $username;
|
||||
}
|
||||
@@ -400,12 +402,15 @@ class User
|
||||
|
||||
protected function deleteUserIndex()
|
||||
{
|
||||
$userDir = __DIR__ . '/../../settings/users';
|
||||
|
||||
if(file_exists($userDir . DIRECTORY_SEPARATOR . 'tmuserindex-mail.txt'))
|
||||
|
||||
if(file_exists($this->userDir . DIRECTORY_SEPARATOR . 'tmuserindex-mail.txt'))
|
||||
{
|
||||
# read and return the file
|
||||
unlink($userDir . DIRECTORY_SEPARATOR . 'tmuserindex-mail.txt');
|
||||
unlink($this->userDir . DIRECTORY_SEPARATOR . 'tmuserindex-mail.txt');
|
||||
}
|
||||
|
||||
if(file_exists($this->userDir . DIRECTORY_SEPARATOR . 'tmuserindex-role.txt'))
|
||||
{
|
||||
unlink($this->userDir . DIRECTORY_SEPARATOR . 'tmuserindex-role.txt');
|
||||
}
|
||||
}
|
||||
}
|
@@ -303,7 +303,7 @@ class Validation
|
||||
$v->rule('noHTML', 'firstname')->message(" contains HTML");
|
||||
$v->rule('lengthBetween', 'firstname', 2, 40);
|
||||
$v->rule('noHTML', 'lastname')->message(" contains HTML");
|
||||
$v->rule('lengthBetween', 'lastname', 2, 40);
|
||||
$v->rule('lengthBetween', 'lastname', 2, 40);
|
||||
$v->rule('email', 'email')->message("e-mail is invalid");
|
||||
$v->rule('emailChanged', 'email')->message("Email already taken");
|
||||
$v->rule('in', 'userrole', $userroles);
|
||||
@@ -316,6 +316,33 @@ class Validation
|
||||
return $v->errors();
|
||||
}
|
||||
|
||||
public function username(array $params)
|
||||
{
|
||||
$v = new Validator($params);
|
||||
$v->rule('required', ['username'])->message("required");
|
||||
$v->rule('alphaNum', 'username')->message("invalid");
|
||||
$v->rule('lengthBetween', 'username', 3, 20)->message("Length between 3 - 20");
|
||||
if($v->validate())
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public function emailsearch(array $params)
|
||||
{
|
||||
# param can be "trend*"
|
||||
$v = new Validator($params);
|
||||
$v->rule('required', ['email'])->message("required");
|
||||
$v->rule('noHTML', 'email')->message(" contains HTML");
|
||||
$v->rule('lengthBetween', 'email', 3, 50)->message("Length between 3 - 50");
|
||||
if($v->validate())
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public function newLicense(array $params)
|
||||
{
|
||||
$v = new Validator($params);
|
||||
|
Reference in New Issue
Block a user