User List
This commit is contained in:
parent
2fde820942
commit
7ee04b0a4b
15
exam/api/Users/Users.php
Normal file
15
exam/api/Users/Users.php
Normal file
@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
namespace Api\Users;
|
||||
|
||||
use Khofmann\Api\Api;
|
||||
use Khofmann\Models\User\User;
|
||||
use Khofmann\Response\Response;
|
||||
|
||||
class Users extends Api
|
||||
{
|
||||
public function get()
|
||||
{
|
||||
Response::json(User::list());
|
||||
}
|
||||
}
|
||||
@ -158,6 +158,57 @@ paths:
|
||||
value: { "message": "User not found" }
|
||||
tags:
|
||||
- Register
|
||||
/users:
|
||||
get:
|
||||
summary: List users
|
||||
description: List all users. <br>
|
||||
Requires logged in user to have admin permissions.
|
||||
security:
|
||||
- BasicAuth: []
|
||||
responses:
|
||||
200:
|
||||
description: Success
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/UserListResponse"
|
||||
examples:
|
||||
Success:
|
||||
value:
|
||||
[
|
||||
{
|
||||
"id": 1,
|
||||
"username": "Admin",
|
||||
"status": 1,
|
||||
"email": "marvin@zedat.fu-berlin.de",
|
||||
"image": "669d41fbdb56b.png",
|
||||
"isAdmin": true,
|
||||
"memberSince":
|
||||
{
|
||||
"date": "2024-07-22 14:02:49.000000",
|
||||
"timezone_type": 3,
|
||||
"timezone": "Europe/Berlin",
|
||||
},
|
||||
"postCount": 3,
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"username": "Max",
|
||||
"status": 1,
|
||||
"email": "max@moritz.net",
|
||||
"image": "profilbilder/max.svg",
|
||||
"isAdmin": false,
|
||||
"memberSince":
|
||||
{
|
||||
"date": "2024-07-22 03:07:41.000000",
|
||||
"timezone_type": 3,
|
||||
"timezone": "Europe/Berlin",
|
||||
},
|
||||
"postCount": 2,
|
||||
},
|
||||
]
|
||||
tags:
|
||||
- User
|
||||
/user{id}:
|
||||
get:
|
||||
summary: Get user
|
||||
@ -187,8 +238,15 @@ paths:
|
||||
"username": "Admin",
|
||||
"status": 1,
|
||||
"email": "marvin@zedat.fu-berlin.de",
|
||||
"image": "profilbilder\\/admin.svg",
|
||||
"image": "669d41fbdb56b.png",
|
||||
"isAdmin": true,
|
||||
"memberSince":
|
||||
{
|
||||
"date": "2024-07-22 14:02:49.000000",
|
||||
"timezone_type": 3,
|
||||
"timezone": "Europe/Berlin",
|
||||
},
|
||||
"postCount": 3,
|
||||
}
|
||||
404:
|
||||
description: User not found
|
||||
@ -328,6 +386,18 @@ components:
|
||||
nullable: true
|
||||
isAdmin:
|
||||
type: boolean
|
||||
memberSince:
|
||||
type: object
|
||||
properties:
|
||||
date:
|
||||
type: string
|
||||
format: date-time
|
||||
timezone_type:
|
||||
type: number
|
||||
timezone:
|
||||
type: string
|
||||
postCount:
|
||||
type: number
|
||||
UserUpdateRequest:
|
||||
type: object
|
||||
properties:
|
||||
@ -359,12 +429,15 @@ components:
|
||||
code:
|
||||
type: string
|
||||
format: uuid4
|
||||
UserListResponse:
|
||||
type: array
|
||||
items:
|
||||
$ref: "#/components/schemas/UserResponse"
|
||||
securitySchemes:
|
||||
BasicAuth:
|
||||
type: apiKey
|
||||
name: token
|
||||
in: header
|
||||
format: uuid4
|
||||
tags:
|
||||
- name: Login/Logout
|
||||
- name: Register
|
||||
|
||||
File diff suppressed because one or more lines are too long
@ -226,6 +226,25 @@ class User implements JsonSerializable
|
||||
return $stmt->execute();
|
||||
}
|
||||
|
||||
public static function list()
|
||||
{
|
||||
$db = Database::getInstance();
|
||||
$stmt = $db->prepare(
|
||||
"SELECT
|
||||
b.id, b.benutzer, b.status, b.email, b.image, b.isadmin, b.zeitstempel,
|
||||
(SELECT COUNT(*) FROM egb_gaestebuch WHERE benutzer_id = b.id) as postCount
|
||||
FROM
|
||||
egb_benutzer AS b"
|
||||
);
|
||||
$stmt->execute();
|
||||
$data = $stmt->fetchAll();
|
||||
|
||||
return array_map(
|
||||
fn ($item) => new User($item["id"], $item["benutzer"], $item["status"], $item["email"], $item["zeitstempel"], $item["image"], $item["isadmin"] === 1, $item["postCount"]),
|
||||
$data
|
||||
);
|
||||
}
|
||||
|
||||
/*
|
||||
* Members
|
||||
*/
|
||||
|
||||
@ -35,6 +35,8 @@ SimpleRouter::group(["middleware" => Khofmann\Auth\Auth::class], function () {
|
||||
* Admin Auth routes
|
||||
*/
|
||||
SimpleRouter::group(["middleware" => Khofmann\Auth\AdminAuth::class], function () {
|
||||
// List users
|
||||
SimpleRouter::get("/users", [Api\Users\Users::class, "get"]);
|
||||
// Update any user
|
||||
SimpleRouter::patch("/user/{id}", [Api\User\User::class, "patch"]);
|
||||
// Delete any user
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user