| 1 | {@ include(common/header) @} |
| 2 | {@ include(admin/nav) @} |
| 3 | <h1 class="paragraph">ユーザー</h1> |
| 4 | <form method="get" action="/admin/users" class="admin-row"> |
| 5 | <input type="text" name="q" value="{{ $q }}" placeholder="ユーザー名・表示名・メールアドレス" /> |
| 6 | <button>検索</button> |
| 7 | </form> |
| 8 | {@ if (empty($list)) @} |
| 9 | <p class="paragraph">ユーザーは居ません。</p> |
| 10 | {@ else @} |
| 11 | <div class="admin-scroll"> |
| 12 | <table class="admin-table"> |
| 13 | <thead> |
| 14 | <tr><th>ID</th><th>ユーザー</th><th>メールアドレス</th><th>ロール</th><th>登録</th><th>状態</th><th>ログイン</th></tr> |
| 15 | </thead> |
| 16 | <tbody> |
| 17 | {@ foreach ($list as $u) @} |
| 18 | <tr{{{ $u['banned'] ? ' class="admin-banned"' : '' }}}> |
| 19 | <td>{{ $u['id'] }}</td> |
| 20 | <td class="admin-user"><img src="{{ $u['avatar'] }}" alt="" /><a href="/admin/users/{{ $u['username'] }}">{{ $u['username'] }}</a>{{ $u['displayname'] !== '' ? '('.$u['displayname'].')' : '' }}</td> |
| 21 | <td>{{ $u['email'] }}{{ $u['pendingEmail'] !== '' ? '(確認待ち:'.$u['pendingEmail'].')' : '' }}</td> |
| 22 | <td>{{ $u['roles'] }}</td> |
| 23 | <td>{{ $u['reg'] }}</td> |
| 24 | <td>{{ $u['verified'] ? '' : '未確認 ' }}{{ $u['twoFactor'] ? '2FA' : '' }}</td> |
| 25 | <td>{{ $u['sessions'] }}件、{{ $u['lastLogin'] }}</td> |
| 26 | </tr> |
| 27 | {@ endforeach @} |
| 28 | </tbody> |
| 29 | </table> |
| 30 | </div> |
| 31 | {@ endif @} |
| 32 | <h2 class="paragraph">ユーザーを作る</h2> |
| 33 | <p class="paragraph">登録が無効でも作れます。メールアドレスの確認は不要です。</p> |
| 34 | <form method="post" action="/admin/users" class="admin-form"> |
| 35 | <input type="hidden" name="csrf_token" value="{{ $csrf }}" /> |
| 36 | <label>ユーザー名:<input type="text" name="username" value="{{ $in['username'] }}" required="required" /></label> |
| 37 | <label>メールアドレス:<input type="email" name="email" value="{{ $in['email'] }}" required="required" /></label> |
| 38 | <label>パスワード:<input type="password" name="password" autocomplete="new-password" required="required" /></label> |
| 39 | <label>パスワード(確認):<input type="password" name="passwordVerify" autocomplete="new-password" required="required" /></label> |
| 40 | <div class="admin-checks"> |
| 41 | {@ foreach ($roles as $bit => $label) @} |
| 42 | <label><input type="checkbox" name="roles[]" value="{{ $bit }}"{{{ $bit === \Roles::MEMBER ? ' checked="checked"' : '' }}} /> {{ $label }}</label> |
| 43 | {@ endforeach @} |
| 44 | </div> |
| 45 | <button>作る</button> |
| 46 | </form> |
| 47 | {@ include(common/footer) @} |