ロール
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
/* error_reporting(E_ALL); */
|
||||
/* ini_set('display_errors', 1); */
|
||||
error_reporting(E_ALL);
|
||||
ini_set('display_errors', 1);
|
||||
|
||||
require_once __DIR__.DIRECTORY_SEPARATOR.'/autoload.php';
|
||||
|
||||
@@ -45,6 +45,9 @@ if (AUTH_ENABLED) {
|
||||
}
|
||||
$routes[] = Route::add('GET', 'logout', User::class.'@logout');
|
||||
$routes[] = Route::add('GET', 'profile/{name}', User::class.'@profile');
|
||||
|
||||
$routes[] = Route::add('GET', 'memberonly', Page::class.'@memberonly');
|
||||
$routes[] = Route::add('GET', 'staffonly', Page::class.'@staffonly');
|
||||
}
|
||||
|
||||
/* if (RSS_ENABLED) {} */
|
||||
|
||||
@@ -10,8 +10,8 @@ class BlogPost {
|
||||
public function getPosts(string $section, ?\stdClass $user): array {
|
||||
$path = ROOT.$section;
|
||||
$posts = [];
|
||||
$isMember = $user !== NULL;
|
||||
$isStaff = $user !== NULL && $user->role === 1;
|
||||
$isMember = $user !== NULL && $user->role !== \Roles::BANNED;
|
||||
$isStaff = $user !== NULL && $user->role & (\Roles::ADMIN | \Roles::STAFF);
|
||||
|
||||
if (!is_dir($path)) return $posts;
|
||||
$files = glob($path.'/*.md');
|
||||
|
||||
@@ -113,8 +113,8 @@ class Home extends BlogPost {
|
||||
// ユーザー
|
||||
$auth = new Auth();
|
||||
$user = $auth->getLoggedInUser();
|
||||
$isMember = $user !== NULL;
|
||||
$isStaff = $user !== NULL && $user->role === 1;
|
||||
$isMember = $user !== NULL && $user->role !== \Roles::BANNED;
|
||||
$isStaff = $user !== NULL && $user->role & (\Roles::ADMIN | \Roles::STAFF);
|
||||
$tmpl->assign('user', $user);
|
||||
|
||||
$tmpl->assign('pagetit', $pagetit);
|
||||
|
||||
@@ -96,7 +96,7 @@ class Page {
|
||||
$tmpl->assign('menu', $this->getMenu());
|
||||
$tmpl->assign('description', $description);
|
||||
|
||||
if ($user && $user->role != -1) $tmpl->render('memberonly');
|
||||
if ($user && $user->role !== \Roles::BANNED) $tmpl->render('memberonly');
|
||||
else $tmpl->render('nopermission');
|
||||
} catch (\Exception $e) {
|
||||
throw new \Exception($e->getMessage());
|
||||
@@ -121,7 +121,7 @@ class Page {
|
||||
$tmpl->assign('menu', $this->getMenu());
|
||||
$tmpl->assign('description', $description);
|
||||
|
||||
if ($user && $user->role == 1) $tmpl->render('staffonly');
|
||||
if ($user && $user->role & (\Roles::ADMIN | \Roles::STAFF)) $tmpl->render('staffonly');
|
||||
else $tmpl->render('nopermission');
|
||||
} catch (\Exception $e) {
|
||||
throw new \Exception($e->getMessage());
|
||||
|
||||
@@ -40,13 +40,13 @@ class Auth {
|
||||
unset($user->password);
|
||||
unset($user->tokens);
|
||||
$myself = $this->getUserData();
|
||||
if ($myself->role === 1) {
|
||||
if ($myself->role & (\Roles::PLAYSTATIONNDA | \Roles::NINTENDONDA | \Roles::MEMBER | \Roles::BANNED)) {
|
||||
unset($user->email);
|
||||
}
|
||||
$user->name = namecolor($user);
|
||||
$user->regDate = date('Y年m月d日', $user->regDate);
|
||||
$user->gender = $user->gender === 0 ? '男' : ($user->gender === 1 ? '女' : '不明');
|
||||
$user->role = $user->role === 1 ? '管理者' : ($user->role === -1 ? 'BANされた' : 'ユーザー');
|
||||
$user->role = $user->role & (\Roles::ADMIN | \Roles::STAFF) ? '管理者' : ($user->role === \Roles::BANNED ? 'BANされた' : 'ユーザー');
|
||||
$user->avatar = '/static/user/'.($user->avatar === '' ? 'noicon.png' : $user->username.'/'.$user->avatar);
|
||||
$user->altName = $user->displayname ?: $user->username;
|
||||
unset($user->username);
|
||||
@@ -199,7 +199,7 @@ class Auth {
|
||||
$user->namecolor = '';
|
||||
$user->displayname = '';
|
||||
$user->gender = -1;
|
||||
$user->role = 0;
|
||||
$user->role = \Roles::MEMBER;
|
||||
$user->tokens = [];
|
||||
|
||||
$path = "{$this->dataDir}{$lastId}.{$username}.json";
|
||||
|
||||
87
util.php
87
util.php
@@ -27,6 +27,89 @@ class Result {
|
||||
}
|
||||
}
|
||||
|
||||
class Roles {
|
||||
// 例: if ($user->role & (Roles::STAFF | Roles::NINTENDONDA))
|
||||
public const int BANNED = 0;
|
||||
public const int MEMBER = 1 << 0; // 1
|
||||
public const int NINTENDONDA = 1 << 1; // 2
|
||||
public const int PLAYSTATIONNDA = 1 << 2; // 4
|
||||
public const int STAFF = 1 << 3; // 8
|
||||
public const int ADMIN = 1 << 7; // 128
|
||||
}
|
||||
|
||||
$colorPalette = [
|
||||
'ultradark' => [
|
||||
'black' => '#020102',
|
||||
'white' => '#b3b1b3',
|
||||
'grey' => '#5c535c',
|
||||
'yellow' => '#8d8b0d',
|
||||
'orange' => '#724e0b',
|
||||
'green' => '#1e6907',
|
||||
'purple' => '#410a5a',
|
||||
'lime' => '#198d5b',
|
||||
'pink' => '#9e0ea3',
|
||||
'cyan' => '#1e8c9b',
|
||||
'red' => '#861623',
|
||||
'blue' => '#164a85',
|
||||
],
|
||||
'dark' => [
|
||||
'black' => '#120f12',
|
||||
'white' => '#cfcbcf',
|
||||
'grey' => '#746c75',
|
||||
'yellow' => '#b8b515',
|
||||
'orange' => '#ac7718',
|
||||
'green' => '#2c980c',
|
||||
'purple' => '#550f75',
|
||||
'lime' => '#10c074',
|
||||
'pink' => '#c016c6',
|
||||
'cyan' => '#1cbcd0',
|
||||
'red' => '#bc1729',
|
||||
'blue' => '#1a6ecf',
|
||||
],
|
||||
'medium' => [
|
||||
'black' => '#232023',
|
||||
'white' => '#f6f6f6',
|
||||
'grey' => '#988f98',
|
||||
'yellow' => '#f1ed25',
|
||||
'orange' => '#f7a717',
|
||||
'green' => '#2de12c',
|
||||
'purple' => '#b421f8',
|
||||
'lime' => '#20f398',
|
||||
'pink' => '#f545f5',
|
||||
'cyan' => '#29d3ff',
|
||||
'red' => '#ee4030',
|
||||
'blue' => '#2687f7',
|
||||
],
|
||||
'light' => [
|
||||
'black' => '#443b44',
|
||||
'white' => '#fcfcfc',
|
||||
'grey' => '#bdb4bd',
|
||||
'yellow' => '#ecea71',
|
||||
'orange' => '#f8c56a',
|
||||
'green' => '#6cf344',
|
||||
'purple' => '#ae6bdb',
|
||||
'lime' => '#88ecc1',
|
||||
'pink' => '#ea79d8',
|
||||
'cyan' => '#8ae5ff',
|
||||
'red' => '#f35869',
|
||||
'blue' => '#6aa6eb',
|
||||
],
|
||||
'ultralight' => [
|
||||
'black' => '#574d57',
|
||||
'white' => '#ffffff',
|
||||
'grey' => '#d6cfd6',
|
||||
'yellow' => '#f5f4cf',
|
||||
'orange' => '#f3d6a3',
|
||||
'green' => '#baf3a8',
|
||||
'purple' => '#d2bae2',
|
||||
'lime' => '#b6e9d3',
|
||||
'pink' => '#e6b9de',
|
||||
'cyan' => '#c2e8f3',
|
||||
'red' => '#ecb0b7',
|
||||
'blue' => '#bbd4f0',
|
||||
],
|
||||
];
|
||||
|
||||
function uuid(): string {
|
||||
$data = random_bytes(16);
|
||||
$data[6] = chr(ord($data[6]) & 0x0f | 0x40);
|
||||
@@ -214,12 +297,12 @@ function namecolor(\stdClass $userData): string {
|
||||
$ungender = "#7C60B0";
|
||||
|
||||
$gender = 'color: '.($userData->gender === 0 ? $male : ($userData->gender === 1 ? $female : $ungender)).';';
|
||||
$style = $userData->namecolor ?: ($userData->role >= 0 ? $gender : $ban);
|
||||
$style = $userData->namecolor ?: ($userData->role !== Roles::BANNED ? $gender : 'color: '.$ban.';');
|
||||
|
||||
$showname = $userData->displayname ?: $userData->username;
|
||||
|
||||
$color = "<span style=\"{$style}\">{$showname}</span>";
|
||||
if ($userData->role === 1) $color .= "<span style=\"font-size: x-small; background: #10c074; border: 1px solid #fcfcfc; border-radius: 10px; padding: 0 0.5em;\">✓</span>";
|
||||
if ($userData->role & (Roles::ADMIN | Roles::STAFF)) $color .= "<span style=\"font-size: x-small; background: #10c074; border: 1px solid #fcfcfc; border-radius: 10px; padding: 0 0.5em;\">✓</span>";
|
||||
|
||||
$suffix = $userData->gender === 0 ? 'くん' : ($userData->gender === 1 ? 'ちゃん' : 'さん');
|
||||
|
||||
|
||||
Reference in New Issue
Block a user