- basic admin panel and user management

This commit is contained in:
Alex Ling
2020-02-13 04:36:59 +00:00
parent f126dfb430
commit 83f6fc25f0
9 changed files with 307 additions and 17 deletions

24
src/views/admin.ecr Normal file
View File

@@ -0,0 +1,24 @@
<ul class="uk-list uk-list-large uk-list-divider">
<li data-url="/admin/info">Server Info</li>
<li data-url="/admin/user">User Managerment</li>
<li onclick="scan()">Scan Library Files</li>
</ul>
<hr class="uk-divider-icon">
<a class="uk-button uk-button-danger" href="/logout">Log Out</a>
<% content_for "script" do %>
<script>
function scan() {
alert("scan");
}
$(function() {
$('li').click(function() {
url = $(this).attr('data-url');
if (url) {
$(location).attr('href', url)
}
});
});
</script>
<% end %>

View File

@@ -6,7 +6,6 @@
<title>Mango</title>
<meta name="description" content="Mango Manga Server">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/uikit@3.3.1/dist/css/uikit.min.css" />
<link rel="stylesheet" href="/css/mango.css" />
</head>
@@ -23,5 +22,7 @@
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/uikit@3.3.1/dist/js/uikit.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/uikit@3.3.1/dist/js/uikit-icons.min.js"></script>
<%= yield_content "script" %>
</body>
</html>

View File

@@ -6,7 +6,6 @@
<title>Mango</title>
<meta name="description" content="Mango Manga Server">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/uikit@3.3.1/dist/css/uikit.min.css" />
<link rel="stylesheet" href="/css/mango.css" />
</head>

67
src/views/user-edit.ecr Normal file
View File

@@ -0,0 +1,67 @@
<div id="alert"></div>
<form action="/admin/user/edit" method="post" accept-charset="utf-8">
<div class="uk-margin">
<label class="uk-form-label" for="form-stacked-text">Username</label>
<input class="uk-input" type="text" name="username"
<%- if username -%>
value=<%= username %>
<%- end -%>
>
</div>
<%- if new_user -%>
<div class="uk-margin">
<label class="uk-form-label" for="form-stacked-text">Password</label>
<input class="uk-input" type="password" name="password">
</div>
<%- end -%>
<div class="uk-margin">
<label class="uk-form-label" for="form-stacked-text">Admin Access</label>
<input class="uk-checkbox" type="checkbox" name="admin"
<%- if admin == true -%>
checked
<%- end -%>
>
</div>
<%- if !new_user -%>
<div>
<button class="uk-button uk-button-default" type="button" uk-toggle="target: #change-password">Change Password</button>
<div id="change-password" class="uk-margin" hidden>
<label class="uk-form-label" for="form-stacked-text">New Password</label>
<input class="uk-input" type="password" name="password">
</div>
</div>
<%- end -%>
<hr class="uk-divider-icon">
<input type="submit" value="Save" class="uk-button uk-button-primary">
</form>
<% content_for "script" do %>
<script>
$(function(){
var target = '/admin/user/edit';
<%- if !new_user -%>
target += '/<%= username %>';
<%- end -%>
$('form').attr('action', target);
function alert(level, text) {
hideAlert();
var html = '<div class="uk-alert-' + level + '" uk-alert><a class="uk-alert-close" uk-close></a><p>' + text + '</p></div>';
$('#alert').append(html);
}
function hideAlert() {
$('#alert').empty();
}
<%- if error -%>
alert('danger', '<%= error %>');
<%- end -%>
});
</script>
<% end %>

34
src/views/user.ecr Normal file
View File

@@ -0,0 +1,34 @@
<table class="uk-table uk-table-divider">
<thead>
<tr>
<th>Username</th>
<th>Admin Access</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
<%- users.each do |u| -%>
<tr>
<td><%= u[0] %></td>
<td><%= u[1] %></td>
<td>
<a href="/admin/user/edit?username=<%= u[0] %>&admin=<%= u[1] %>" uk-icon="file-edit"></a>
<%- if u[0] != username %>
<a href="#" onclick="remove('<%= u[0] %>');return false;" uk-icon="trash"></a>
<%- end %>
</td>
</tr>
<%- end -%>
</tbody>
</table>
<a href="/admin/user/edit" class="uk-button uk-button-primary">New User</a>
<% content_for "script" do %>
<script>
function remove(username) {
alert(username);
}
</script>
<% end %>