user edit

This commit is contained in:
2020-05-15 15:17:57 -04:00
parent 0889832efc
commit b8f632e644
16 changed files with 411 additions and 163 deletions

View File

@ -1,7 +1,7 @@
<%- include('top') %>
<script id="rowTemplate" type="text/html">
<p>
<div class="card">
<div class="card shadow-lg">
<div class="card-header">
<i class="fad fa-users-class"></i>
Group: {{ cn }}
@ -93,7 +93,7 @@
</script>
<div class="row" style="display:none">
<div class="col-md-4">
<div class="card">
<div class="card shadow-lg">
<div class="card-header">
<i class="fas fa-layer-plus"></i>
Add new group
@ -117,13 +117,12 @@
</div>
</div>
<div class="col-md-8">
<div class="card">
<div class="card shadow-lg">
<div class="card-header">
<i class="fad fa-users-class"></i>
Group list
</div>
<div class="alert alert-warning actionMessage" style="display:none">
<!-- Message after AJAX action is preformed -->
<div class="card-header actionMessage" style="display:none">
</div>
<div class="card-body">
<div class="" id="tableAJAX">

View File

@ -1,40 +1,70 @@
<%- include('top') %>
<script id="profileTemplate" type="text/html">
<h2><i>User Name:</i> <b>{{uid}}</b></h2>
<i>Name:</i> <b>{{givenName}} {{sn}}</b><br />
<i>Email:</i> <b>{{mail}} </b><br />
<i>Phone:</i> <b>{{mobile}} </b><br />
<i>Home Directory:</i> <b>{{homeDirectory}} </b><br />
<i>Login Shell:</i> <b>{{loginShell}} </b><br />
<i>Unix User ID:</i> <b>{{uidNumber}} </b><br />
<i>Unix Group ID:</i> <b>{{gidNumber}} </b><br />
<i>LDAP DN:</i> <b>{{dn}} </b><br />
<i>SSH Public Key</i> <b>{{sshPublicKey}}</b><br />
<i>Joined</i> <b>{{createTimestamp}} </b><br />
<i>Edited</i> <b>{{modifyTimestamp}} </b><br />
<img id="profile_photo" >
<h2><i>User Name:</i> <b>{{uid}}</b></h2>
<i>Name:</i> <b>{{givenName}} {{sn}}</b><br />
<i>Email:</i> <b>{{mail}} </b><br />
<i>Joined:</i> <b>{{createTimestamp}} </b>, <i>Edited:</i> <b>{{modifyTimestamp}} </b><br />
<i>Phone:</i> <b>{{mobile}} </b><br />
<i>LDAP DN:</i> <b>{{dn}} </b><br />
<i>Home Directory:</i> <b>{{homeDirectory}} </b><br />
<i>Login Shell:</i> <b>{{loginShell}} </b><br />
<i>SSH Public Key:</i> <b>{{sshPublicKey}}</b><br />
<i>Unix User ID:</i> <b>{{uidNumber}} </b><br />
<i>Unix Group ID:</i> <b>{{gidNumber}} </b><br />
<i>Description:</i><br>
<p>
{{description}}
</p>
<img id="profile_photo" >
</script>
<script id="groupRowTemplate" type="text/html">
<tr>
<td>{{cn}}</td>
<td>{{description}}</td>
</tr>
</script>
<script id="userEditTemplate" type="text/html">
<h3>Editing {{uid}}</h3>
<form action="user/{{uid}}" method="put" onsubmit="formAJAX(this)" evalAJAX="editUserSeccess()">
<div class="form-group">
<label class="control-label">SSH Public Key</label>
<input type="text" class="form-control" name="sshPublicKey" placeholder="ssh-rsa AAAAB3NzaC1yc2EAAAADAQ..." value="{{sshPublicKey}}" />
</div>
<div class="form-group">
<label class="control-label">Mobile Phone</label>
<input type="text" class="form-control" name="mobile" placeholder="9175551234" validate=":9" value="{{mobile}}" />
</div>
<div class="form-group">
<label class="control-label">User Description (Optional)</label>
<textarea class="form-control" name="description" placeholder="Admin group for gitea app">{{description}}</textarea>
</div>
<button type="submit" class="btn btn-outline-dark btn-warning">Change</button>
</form>
</script>
<script id="paswordResetTemplate" type="text/html">
<h3>
Reset Password for {{uid}}
</h3>
<form action="user/{{uid}}/password" method="put" onsubmit="formAJAX(this)">
<div class="form-group">
<form action="user/{{uid}}/password" method="put" onsubmit="formAJAX(this)" class="form-group">
<label class="control-label">Password</label>
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="input-group-text" ><i class="fad fa-key"></i></span>
</div>
<div class="input-group-prepend">
<span class="input-group-text" ><i class="fad fa-key"></i></span>
</div>
<input type="password" name="userPassword" class="form-control" placeholder="hunter123!" validate=":3" />
</div>
</div>
<div class="form-group">
<label class="control-label">Agian</label>
<label class="control-label">Again</label>
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="input-group-text" ><i class="fad fa-key"></i></span>
</div>
<div class="input-group-prepend">
<span class="input-group-text" ><i class="fad fa-key"></i></span>
</div>
<input type="password" name="password" class="form-control" placeholder="hunter123!" validate="eq:userPassword" />
</div>
</div>
@ -43,10 +73,7 @@
</script>
<script type="text/javascript">
function hexToBase64(str) {
return btoa(String.fromCharCode.apply(null, str.replace(/\r|\n/g, "").replace(/([\da-fA-F]{2}) ?/g, "0x$1 ").replace(/ +$/, "").split(" ")));
}
var currentUser;
function getInvite(){
app.user.createInvite(function(error, data){
@ -54,27 +81,82 @@
});
}
$(document).ready(function(){
function renderProfile(user){
var profileTemplate = $('#profileTemplate').html();
var paswordResetTemplate = $('#paswordResetTemplate').html();
var $target = $('#tableAJAX');
var $target = $('#userProfile div.card-body');
$target.html('').hide();
app.auth.isLoggedIn(function(error, data){
// data.photo = unescape(encodeURIComponent(data.jpegPhoto));
user.createTimestamp = moment(user.createTimestamp, "YYYYMMDDHHmmssZ").fromNow();
user.modifyTimestamp = moment(user.modifyTimestamp, "YYYYMMDDHHmmssZ").fromNow();
$target.html(Mustache.render(profileTemplate, user));
$('#passwordReset').html(Mustache.render(paswordResetTemplate, user))
};
function renderUserGroups(user){
app.api.get('group/?detail=true&member='+user.uid, function(error, data){
var groupRowTemplate = $('#groupRowTemplate').html();
var $target = $('#mygroups');
$target.html('')
if(error){
app.util.actionMessage(data.message || '', $target, error ? 'danger': null);
app.utils.actionMessage(data.message, $target, 'danger');
}else{
// data.photo = unescape(encodeURIComponent(data.jpegPhoto));
data.createTimestamp = moment(data.createTimestamp, "YYYYMMDDHHmmssZ").fromNow();
data.modifyTimestamp = moment(data.modifyTimestamp, "YYYYMMDDHHmmssZ").fromNow();
$target.html(Mustache.render(profileTemplate, data));
$('#passwordReset').html(Mustache.render(paswordResetTemplate, data))
$target.fadeIn('slow');
for(var group of data.results){
$target.append(Mustache.render(groupRowTemplate, group));
}
}
});
}
function determinUser(callback){
if(location.pathname.includes('/users/')){
var uid = location.pathname.replace('/users/', '');
app.api.get('user/'+uid, function(err, res){
callback(res.results)
})
}else{
callback(app.auth.user)
}
}
function editUser(){
determinUser(function(user){
var $profileCard = $('#userProfile');
var $editCard = $('#editProfile');
var userEditTemplate = $('#userEditTemplate').html()
$editCard.find('.card-body').html(Mustache.render(userEditTemplate, user))
$profileCard.slideUp();
$editCard.slideDown();
});
}
function editUserSeccess(){
console.log('edit done')
$('#editProfile').slideUp();
determinUser(function(user){
currentUser = user;
app.auth.user = user;
renderProfile(user);
renderUserGroups(user);
$('#userProfile').slideDown();
});
}
$(document).ready(function(){
determinUser(function(user){
currentUser = user;
renderProfile(user);
renderUserGroups(user);
});
});
</script>
<div class="row" style="display:none">
@ -134,28 +216,6 @@
</ul>
</div>
</div>
</div>
<div class="col-md-8">
<div class="shadow-lg card card-default mb-8">
<div class="card-header">
<i class="fad fa-id-card"></i>
Profile
<div class="hover-effect float-right">
<i class="far fa-arrows-v"></i>
</div>
</div>
<div class="card-header actionMessage" style="display:none">
</div>
<div class="card-body" style="padding-bottom:0">
<div class="alert alert-warning actionMessage" style="display:none">
<!-- Message after AJAX action is preformed -->
</div>
<div id="tableAJAX" style="display:none">
</div>
</div>
</div>
<br />
<div class="shadow-lg card">
<div class="card-header">
<i class="fad fa-undo-alt"></i>
@ -170,7 +230,78 @@
</div>
</div>
</div>
<div class="col-md-8">
<div id="userProfile" class="shadow-lg card card-default mb-8">
<div class="card-header">
<i class="fad fa-id-card"></i>
Profile
<div class="hover-effect float-right">
<i class="far fa-arrows-v"></i>
</div>
</div>
<div class="card-header actionMessage" style="display:none">
</div>
<div class="card-body">
<!-- User profile inserted by JS -->
</div>
<div class=card-footer>
<button type="button" onclick="editUser()" class="btn btn-warning btn-lg">
<i class="fad fa-user-edit"></i>
</button>
<button type="button" onclick="app.user.remove({uid: currentUser.uid}, function(){app.util.actionMessage('username {{uid}} delete.', $(this), 'danger')})" class="btn btn-danger btn-lg float-right">
<i class="fad fa-user-slash"></i>
</button>
</div>
</div>
<div id="editProfile" class="shadow-lg card card-default mb-8" style="display:none">
<div class="card-header">
<i class="fad fa-id-card"></i>
Edit Profile
<div class="hover-effect float-right">
<i class="far fa-arrows-v"></i>
</div>
</div>
<div class="card-header actionMessage" style="display:none">
</div>
<div class="card-body">
<div id="tableAJAX">
</div>
</div>
</div>
<br />
<div class="shadow-lg card card-default mb-8">
<div class="card-header">
<i class="fad fa-id-card"></i>
My groups
<div class="hover-effect float-right">
<i class="far fa-arrows-v"></i>
</div>
</div>
<div class="card-header actionMessage" style="display:none">
</div>
<div class="card-body" style="padding-bottom:0">
<div class="table-responsive">
<table class="table">
<thead>
<th>
Name
</th>
<th>
Description
</th>
</thead>
<tbody id="mygroups">
</tbody>
</table>
</div>
</div>
</div>
<br />
</div>
</div>
<%- include('bottom') %>

View File

@ -11,7 +11,7 @@
</script>
<div class="row" style="display:none">
<div class="col-md-12">
<div class="card">
<div class="card shadow-lg">
<div class="card-header">
Add new user
</div>

View File

@ -32,11 +32,12 @@
</p>
<form action="auth/invite/<%= invite.token %>" onsubmit="formAJAX(this)" evalAJAX="emailSent()">
<div class="form-group">
<label class="control-label">Email</label>
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="input-group-text" ><i class="fad fa-at"></i></span>
</div>
<input type="email" name="mail" class="form-control" placeholder="jsmith@gmail.com" required />
<input type="email" name="mail" class="form-control" placeholder="jsmith@gmail.com" validate="email:3" />
</div>
</div>

View File

@ -55,8 +55,6 @@
<div class="card-header actionMessage" style="display:none">
</div>
<div class="card-body">
<div class="alert alert-warning actionMessage" style="display:none">
</div>
<h3>Coming soon!</h3>
<p>
<ul class="list-group">
@ -84,11 +82,12 @@
<input type="hidden" name="redirect" value="<%= redirect %>">
<div class="form-group">
<label class="control-label">Email</label>
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="input-group-text" ><i class="fad fa-at"></i></span>
</div>
<input type="email" name="mail" class="form-control" placeholder="jsmith@gmail.com" required />
<input type="email" name="mail" class="form-control" placeholder="jsmith@gmail.com" validate="email:3" />
</div>
</div>

View File

@ -6,7 +6,7 @@
</script>
<div class="row" style="display:none">
<div class="col-md-12">
<div class="card">
<div class="card shadow-lg">
<div class="card-header">
Password reset
</div>
@ -24,7 +24,7 @@
</div>
</div>
<div class="form-group">
<label class="control-label">Agian</label>
<label class="control-label">Again</label>
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="input-group-text" ><i class="fad fa-key"></i></span>

View File

@ -1,4 +1,4 @@
<form action="user/" method="post">
<form action="user/" method="post" onsubmit="formAJAX(this)">
<input type="hidden" class="form-control" name="delete" value="false" />
<div class="form-group">
<label class="control-label">First name</label>
@ -15,6 +15,11 @@
<input type="text" class="form-control" name="mail" placeholder="jsmith@gmail.com" validate="email:3" />
</div>
<div class="form-group">
<label class="control-label">SSH Public Key</label>
<input type="text" class="form-control" name="sshPublicKey" placeholder="ssh-rsa AAAAB3NzaC1yc2EAAAADAQ..." />
</div>
<div class="form-group">
<label class="control-label">Mobile Phone</label>
<input type="text" class="form-control" name="mobile" placeholder="9175551234" validate=":9" />
@ -28,5 +33,9 @@
<label class="control-label">Again</label>
<input type="password" class="form-control" name="passwordMatch" placeholder="Retype password" validate="eq:userPassword"/>
</div>
<button type="button" onclick="formAJAX(this)" class="btn btn-outline-dark">Add</button>
<div class="form-group">
<label class="control-label">User Description (Optional)</label>
<textarea class="form-control" name="description" placeholder="Admin group for gitea app"></textarea>
</div>
<button type="submit" class="btn btn-outline-dark">Add</button>
</form>

View File

@ -2,21 +2,33 @@
<script id="rowTemplate" type="text/html">
<tr action="user/password/{{ username }}" method="put" evalAJAX="$form.trigger('reset')">
<td>
{{ uidNumber }}:{{ uid }}
{{ uidNumber }}
</td>
<td>
{{givenName}} {{sn}} {{mail}}
<a href='/users/{{uid}}'>{{ uid }}</a>
</td>
<td>
<button type="button" onclick="app.user.remove({uid: '{{uid}}'}, function(){tableAJAX('username {{uid}} delete.')})" class="btn btn-sm btn-danger">
Delete
{{givenName}} {{sn}}
</td>
<td>
{{mail}}
</td>
<td>
{{#sudoUser}}<i class="fad fa-check-square"></i>{{/sudoUser}}
</td>
<td>
{{#sshPublicKey}}<i class="fad fa-check-square"></i>{{/sshPublicKey}}
</td>
<td>
<button type="button" onclick="app.user.remove({uid: '{{uid}}'}, function(){renderUsers('username {{uid}} delete.')})" class="btn btn-sm btn-danger">
<i class="fad fa-user-slash"></i>
</button>
</td>
</tr>
</script>
<script type="text/javascript">
function tableAJAX(actionMessage){
function renderUsers(actionMessage){
var rowTemplate = $('#rowTemplate').html();
var $target = $('#tableAJAX');
@ -38,12 +50,13 @@
}
$(document).ready(function(){
tableAJAX(); //populate the table
renderUsers(); //populate the table
$('form[action="user/"]').attr('evalAJAX', 'renderUsers()')
});
</script>
<div class="row" style="display:none">
<div class="col-md-4">
<div class="card">
<div class="card shadow-lg">
<div class="card-header">
<i class="fas fa-user-plus"></i>
Add new user
@ -55,7 +68,7 @@
</div>
</div>
<div class="col-md-8">
<div class="card">
<div class="card shadow-lg">
<div class="card-header">
<i class="fad fa-th-list"></i>
User List
@ -65,9 +78,13 @@
<div class="table-responsive">
<table class="table">
<thead>
<th>id</th>
<th>uid</th>
<th>Name</th>
<th>Password</th>
<th>Delete</th>
<th>eMail</th>
<th>Sudo</th>
<th>key</th>
<th></th>
</thead>
<tbody id="tableAJAX">
<!-- ajax loaded table -->