2019-08-05 01:13:03 -08:00
|
|
|
{{define "title"}}Create User{{end}}
|
|
|
|
{{define "style"}}
|
|
|
|
|
|
|
|
{{end}}
|
|
|
|
{{define "content"}}
|
2019-08-05 13:25:49 -08:00
|
|
|
|
2019-08-05 18:47:07 -08:00
|
|
|
<nav aria-label="breadcrumb">
|
|
|
|
<ol class="breadcrumb">
|
|
|
|
<li class="breadcrumb-item"><a href="/users">Users</a></li>
|
|
|
|
<li class="breadcrumb-item active" aria-current="page">Create</li>
|
|
|
|
</ol>
|
|
|
|
</nav>
|
|
|
|
|
2019-08-05 13:25:49 -08:00
|
|
|
<div class="d-sm-flex align-items-center justify-content-between mb-4">
|
|
|
|
<h1 class="h3 mb-0 text-gray-800">Create User</h1>
|
|
|
|
</div>
|
|
|
|
|
2019-08-05 01:13:03 -08:00
|
|
|
<form class="user" method="post" novalidate>
|
2019-08-05 13:25:49 -08:00
|
|
|
<div class="card shadow">
|
|
|
|
<div class="card-body">
|
|
|
|
<div class="row">
|
|
|
|
<div class="col-md-6">
|
|
|
|
<div class="form-group">
|
|
|
|
<label for="inputFirstName">First Name</label>
|
2019-08-05 17:12:28 -08:00
|
|
|
<input type="text"
|
|
|
|
class="form-control {{ ValidationFieldClass $.validationErrors "UserCreateRequest.FirstName" }}"
|
|
|
|
placeholder="enter first name" name="FirstName" value="{{ .form.FirstName }}" required>
|
|
|
|
{{template "invalid-feedback" dict "fieldName" "UserCreateRequest.FirstName" "validationDefaults" $.validationDefaults "validationErrors" $.validationErrors }}
|
2019-08-05 13:25:49 -08:00
|
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
|
|
<label for="inputLastName">Last Name</label>
|
2019-08-05 17:12:28 -08:00
|
|
|
<input type="text"
|
|
|
|
class="form-control {{ ValidationFieldClass $.validationErrors "UserCreateRequest.LastName" }}"
|
|
|
|
placeholder="enter last name" name="LastName" value="{{ .form.LastName }}" required>
|
|
|
|
{{template "invalid-feedback" dict "fieldName" "UserCreateRequest.LastName" "validationDefaults" $.validationDefaults "validationErrors" $.validationErrors }}
|
2019-08-05 13:25:49 -08:00
|
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
|
|
<label for="inputEmail">Email</label>
|
2019-08-05 17:12:28 -08:00
|
|
|
<input type="text" class="form-control {{ ValidationFieldClass $.validationErrors "UserCreateRequest.Email" }}"
|
|
|
|
placeholder="enter email" name="Email" value="{{ .form.Email }}" required>
|
|
|
|
{{template "invalid-feedback" dict "fieldName" "UserCreateRequest.Email" "validationDefaults" $.validationDefaults "validationErrors" $.validationErrors }}
|
2019-08-05 13:25:49 -08:00
|
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
|
|
<label for="inputPassword">Password</label>
|
2019-08-05 17:12:28 -08:00
|
|
|
<input type="password"
|
|
|
|
class="form-control {{ ValidationFieldClass $.validationErrors "UserCreateRequest.Password" }}"
|
|
|
|
id="inputPassword" placeholder="" name="Password" value="{{ .form.Password }}" required>
|
|
|
|
<span class="help-block "><small>
|
|
|
|
<a a href="javascript:void(0)" id="btnGeneratePassword">
|
|
|
|
<i class="fas fa-random mr-1"></i>Generate random password </a>
|
|
|
|
</small></span>
|
|
|
|
{{template "invalid-feedback" dict "fieldName" "UserCreateRequest.Password" "validationDefaults" $.validationDefaults "validationErrors" $.validationErrors }}
|
2019-08-05 13:25:49 -08:00
|
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
|
|
<label for="inputPasswordConfirm">Confirm Password</label>
|
2019-08-05 17:12:28 -08:00
|
|
|
<input type="password"
|
|
|
|
class="form-control {{ ValidationFieldClass $.validationErrors "UserCreateRequest.PasswordConfirm" }}"
|
|
|
|
id="inputPasswordConfirm" placeholder="" name="PasswordConfirm" value="{{ .form.PasswordConfirm }}" required>
|
|
|
|
{{template "invalid-feedback" dict "fieldName" "UserCreateRequest.PasswordConfirm" "validationDefaults" $.validationDefaults "validationErrors" $.validationErrors }}
|
2019-08-05 13:25:49 -08:00
|
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
|
|
<label for="inputRoles">Roles</label>
|
2019-08-05 14:33:20 -08:00
|
|
|
<span class="help-block "><small>- Select at least one role.</small></span>
|
2019-08-05 19:53:04 -08:00
|
|
|
{{ range $r := .roles.Options }}
|
2019-08-05 14:33:20 -08:00
|
|
|
<div class="form-check">
|
2019-08-05 17:12:28 -08:00
|
|
|
<input class="form-check-input {{ ValidationFieldClass $.validationErrors "Roles" }}"
|
|
|
|
type="checkbox" name="Roles"
|
|
|
|
value="{{ $r.Value }}" id="inputRole{{ $r.Value }}"
|
|
|
|
{{ if $r.Selected }}checked="checked"{{ end }}>
|
|
|
|
<label class="form-check-label" for="inputRole{{ $r.Value }}">
|
2019-08-05 14:33:20 -08:00
|
|
|
{{ $r.Title }}
|
|
|
|
</label>
|
|
|
|
</div>
|
|
|
|
{{ end }}
|
2019-08-05 17:12:28 -08:00
|
|
|
{{template "invalid-feedback" dict "fieldName" "Roles" "validationDefaults" $.validationDefaults "validationErrors" $.validationErrors }}
|
2019-08-05 13:25:49 -08:00
|
|
|
</div>
|
|
|
|
</div>
|
2019-08-05 01:13:03 -08:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
2019-08-05 13:25:49 -08:00
|
|
|
|
|
|
|
<div class="row mt-4">
|
2019-08-05 01:13:03 -08:00
|
|
|
<div class="col">
|
2019-08-05 17:12:28 -08:00
|
|
|
<input type="submit" value="Save" class="btn btn-primary"/>
|
2019-08-05 13:25:49 -08:00
|
|
|
<a href="/users" class="ml-2 btn btn-secondary" >Cancel</a>
|
2019-08-05 01:13:03 -08:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</form>
|
|
|
|
{{end}}
|
|
|
|
{{define "js"}}
|
|
|
|
<script>
|
|
|
|
function randomPassword(length) {
|
|
|
|
var chars = "abcdefghijklmnopqrstuvwxyz!@#&*()-+<>ABCDEFGHIJKLMNOP1234567890";
|
|
|
|
var pass = "";
|
|
|
|
for (var x = 0; x < length; x++) {
|
|
|
|
var i = Math.floor(Math.random() * chars.length);
|
|
|
|
pass += chars.charAt(i);
|
|
|
|
}
|
|
|
|
return pass;
|
|
|
|
}
|
|
|
|
|
|
|
|
$(document).ready(function(){
|
|
|
|
$("#btnGeneratePassword").on("click", function() {
|
|
|
|
pwd = randomPassword(12);
|
|
|
|
$("#inputPassword").attr('type', 'text').val(pwd)
|
|
|
|
$("#inputPasswordConfirm").attr('type', 'text').val(pwd)
|
|
|
|
return false;
|
|
|
|
});
|
|
|
|
});
|
|
|
|
</script>
|
|
|
|
{{end}}
|