user edit
This commit is contained in:
@@ -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') %>
|
||||
|
||||
Reference in New Issue
Block a user