users.html 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. {% extends '../layout/2column.html' %}
  2. {% block html_title %}ユーザー管理 · {% endblock %}
  3. {% block content_head %}
  4. <header id="page-header">
  5. <h1 class="title" id="">ユーザー管理</h1>
  6. </header>
  7. {% endblock %}
  8. {% block content_main %}
  9. <div class="content-main">
  10. {% set smessage = req.flash('successMessage') %}
  11. {% if smessage.length %}
  12. <div class="alert alert-success">
  13. {{ smessage }}
  14. </div>
  15. {% endif %}
  16. {% set emessage = req.flash('errorMessage') %}
  17. {% if emessage.length %}
  18. <div class="alert alert-danger">
  19. {{ emessage }}
  20. </div>
  21. {% endif %}
  22. <div class="row">
  23. <div class="col-md-3">
  24. <ul class="nav nav-pills nav-stacked">
  25. <li><a href="/admin"><i class="fa fa-cube"></i> Wiki管理トップ</a></li>
  26. <li><a href="/admin/app"><i class="fa fa-gears"></i> アプリ設定</a></li>
  27. <li class="active"><a href="/admin/users"><i class="fa fa-users"></i> ユーザー管理</a></li>
  28. </ul>
  29. </div>
  30. <div class="col-md-9">
  31. <table class="table table-hover table-striped table-bordered">
  32. <thead>
  33. <tr>
  34. <th>#</th>
  35. <th>ユーザーID</th>
  36. <th>名前</th>
  37. <th>メールアドレス</th>
  38. <th>作成日</th>
  39. <th>最終ログイン</th>
  40. <th>操作</th>
  41. </tr>
  42. </thead>
  43. <tbody>
  44. {% for sUser in users %}
  45. <tr>
  46. <td>
  47. <img src="{{ sUser|picture }}" class="picture picture-rounded" />
  48. <span class="label {{ css.userStatus(sUser) }}">
  49. {{ consts.userStatus[sUser.status] }}
  50. </span><br>
  51. {% if sUser.admin %}
  52. <span class="label label-primary">
  53. Admin
  54. </span>
  55. {% endif %}
  56. </td>
  57. <td>
  58. <strong>{{ sUser.username }}</strong>
  59. </td>
  60. <td>{{ sUser.name }}</td>
  61. <td>{{ sUser.email }}</td>
  62. <td>{{ sUser.createdAt|date('Y-m-d') }}</td>
  63. <td>{{ sUser.lastLoginAt }}</td>
  64. <td>
  65. <div class="btn-group admin-user-menu">
  66. <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
  67. 編集
  68. <span class="caret"></span>
  69. </button>
  70. <ul class="dropdown-menu" role="menu">
  71. <li class="dropdown-header">編集メニュー</li>
  72. <li>
  73. <a href="">編集</a>
  74. </li>
  75. <li class="divider"></li>
  76. <li class="dropdown-header">ステータス</li>
  77. <li class="dropdown-button">
  78. {% if sUser.status == 1 %}
  79. <form action="/admin/user/{{ sUser._id.toString() }}/activate" method="post">
  80. <button type="submit" class="btn btn-block btn-info">承認する</button>
  81. </form>
  82. {% endif %}
  83. {% if sUser.status == 2 %}
  84. <form action="/admin/user/{{ sUser._id.toString() }}/suspend" method="post">
  85. <button type="submit" class="btn btn-block btn-warning">アカウント停止</button>
  86. </form>
  87. {% endif %}
  88. {% if sUser.status == 3 %}
  89. <form action="/admin/user/{{ sUser._id.toString() }}/activate" method="post">
  90. <button type="submit" class="btn btn-block btn-default">元に戻す</button>
  91. </form>
  92. </li>
  93. <li class="dropdown-button">
  94. <form action="/admin/user/{{ sUser._id.toString() }}/suspend" method="post">
  95. <button type="submit" class="btn btn-block btn-danger">完全に削除する</button>
  96. </form>
  97. {% endif %}
  98. {% if sUser.status == 2 %} {# activated な人だけこのメニューを表示 #}
  99. <li class="divider"></li>
  100. <li class="dropdown-header">管理者メニュー</li>
  101. <li class="dropdown-button">
  102. {% if sUser.admin %}
  103. {% if sUser.username != user.username %}
  104. <form action="/admin/user/{{ sUser._id.toString() }}/removeFromAdmin" method="post">
  105. <button type="submit" class="btn btn-block btn-danger">管理者からはずす</button>
  106. </form>
  107. {% else %}
  108. <p class="alert alert-danger">自分自身を管理者から外すことはできません</p>
  109. {% endif %}
  110. {% else %}
  111. <form action="/admin/user/{{ sUser._id.toString() }}/makeAdmin" method="post">
  112. <button type="submit" class="btn btn-block btn-danger">管理者にする</button>
  113. </form>
  114. {% endif %}
  115. </li>
  116. {% endif %}
  117. </ul>
  118. </div>
  119. </td>
  120. </tr>
  121. {% endfor %}
  122. </tbody>
  123. </table>
  124. <ul class="pagination">
  125. <li {% if pager.currentPage == 1 %}class="disabled"{% endif %}>
  126. <a href="/admin/users?page={{ pager.previous|default(1) }}">&laquo;</a>
  127. </li>
  128. {% if pager.previousDots %}
  129. <li><a href="#">...</a></li>
  130. {% endif %}
  131. {% for page in pager.pages %}
  132. <li {% if pager.currentPage == page %}class="active"{% endif %}>
  133. <a href="/admin/users?page={{ page }}">{{ page }}</a>
  134. </li>
  135. {% endfor %}
  136. {% if pager.nextDots %}
  137. <li><a href="#">...</a></li>
  138. {% endif %}
  139. <li {% if pager.currentPage == pager.pageCount %}class="disabled"{% endif %}>
  140. <a href="/admin/users?page={{ pager.next|default(pager.pageCount) }}">&raquo;</a>
  141. </li>
  142. </ul>
  143. </div>
  144. </div>
  145. </div>
  146. {% endblock content_main %}
  147. {% block content_footer %}
  148. {% endblock content_footer %}
  149. {% block footer %}
  150. {% endblock footer %}