diff options
| author | Elmar Ludwig <elmar.ludwig@uni-osnabrueck.de> | 2026-02-27 16:39:27 +0100 |
|---|---|---|
| committer | Elmar Ludwig <elmar.ludwig@uni-osnabrueck.de> | 2026-02-27 16:39:27 +0100 |
| commit | d8a34b4706eaba19e01a481be901fb219c91dc55 (patch) | |
| tree | 30d05613623ddfa5d936086ed55660a38ee140c7 /lib/classes | |
| parent | 7dd8f9c17febec764d515e0e9e151ae3d6736e19 (diff) | |
extend JSON-API schema for users, fixes #6196tic-6196
Diffstat (limited to 'lib/classes')
| -rw-r--r-- | lib/classes/JsonApi/Routes/Users/Authority.php | 2 | ||||
| -rw-r--r-- | lib/classes/JsonApi/Schemas/User.php | 24 |
2 files changed, 23 insertions, 3 deletions
diff --git a/lib/classes/JsonApi/Routes/Users/Authority.php b/lib/classes/JsonApi/Routes/Users/Authority.php index e8aef00..8fe0339 100644 --- a/lib/classes/JsonApi/Routes/Users/Authority.php +++ b/lib/classes/JsonApi/Routes/Users/Authority.php @@ -36,7 +36,7 @@ class Authority public static function canEditUser(User $user, User $userToShow) { - return $user->id === $userToShow->id; + return $user->id === $userToShow->id || $GLOBALS['perm']->have_perm('root', $user->id); } /** diff --git a/lib/classes/JsonApi/Schemas/User.php b/lib/classes/JsonApi/Schemas/User.php index fa79878..ad9c36b 100644 --- a/lib/classes/JsonApi/Schemas/User.php +++ b/lib/classes/JsonApi/Schemas/User.php @@ -56,6 +56,20 @@ class User extends SchemaProvider 'email' => get_visible_email($user->id), ]; + if (UsersAuthority::canEditUser($this->currentUser, $user)) { + $attrs += [ + 'auth-plugin' => $user->auth_plugin, + 'locked' => (bool) $user->locked, + 'lock-comment' => $user->lock_comment ?: null, + 'visible' => (bool) $user->visible, + 'matriculation-number' => $user->matriculation_number, + 'gender' => (int) $user->geschlecht, + 'preferred-language' => $user->preferred_language, + 'mkdate' => date('c', $user->mkdate), + 'chdate' => date('c', $user->chdate), + ]; + } + return $attrs + iterator_to_array($this->getProfileAttributes($user)); } @@ -70,14 +84,20 @@ class User extends SchemaProvider $fields = [ ['phone', 'privatnr', 'private_phone'], - ['homepage', 'Home', 'homepage'], + ['cellphone', 'privatcell', 'private_cell'], ['address', 'privadr', 'privadr'], + ['homepage', 'Home', 'homepage'], + ['hobby', 'hobby', 'hobby'], + ['cv', 'lebenslauf', 'lebenslauf'], + ['publication', 'publi', 'publi'], + ['focus', 'schwerp', 'schwerp'], + ['motto', 'motto', 'motto'], ]; foreach ($fields as list($attr, $field, $vis)) { $value = $user[$field] && is_element_visible_for_user($observer->id, $user->id, $visibilities[$vis] ?? null) - ? strip_tags((string) $user[$field]) + ? $user[$field] : null; yield $attr => $value; } |
