2015-07-20 00:09:47 -07:00
|
|
|
<% include header %>
|
|
|
|
|
|
|
|
|
|
<!-- tester -->
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
|
|
|
|
|
'use strict';
|
|
|
|
|
|
|
|
|
|
// very basic angular app
|
|
|
|
|
var app = angular.module('Application', []);
|
2016-06-02 16:06:15 +02:00
|
|
|
app.controller('Controller', ['$scope', function ($scope) {
|
|
|
|
|
$scope.username = '<%= (user && user.username) ? user.username : '' %>';
|
|
|
|
|
$scope.displayName = '<%= (user && user.displayName) ? user.displayName : '' %>';
|
|
|
|
|
}]);
|
2015-07-20 00:09:47 -07:00
|
|
|
|
|
|
|
|
</script>
|
|
|
|
|
|
2017-08-15 11:11:09 +02:00
|
|
|
<div class="layout-content">
|
|
|
|
|
|
|
|
|
|
<center>
|
2016-04-04 13:42:19 +02:00
|
|
|
<br/>
|
2018-06-12 18:18:41 -07:00
|
|
|
<h4>Hello <%= (user && user.email) ? user.email : '' %>, welcome to <%= cloudronName %>!</h4>
|
|
|
|
|
<h2>Setup your account and password</h2>
|
2017-08-15 11:11:09 +02:00
|
|
|
</center>
|
2015-07-20 00:09:47 -07:00
|
|
|
|
2017-08-15 11:11:09 +02:00
|
|
|
<div class="container" ng-app="Application" ng-controller="Controller">
|
2015-07-20 00:09:47 -07:00
|
|
|
<div class="row">
|
2017-08-15 11:11:09 +02:00
|
|
|
<div class="col-md-6 col-md-offset-3">
|
|
|
|
|
<form action="/api/v1/session/account/setup" method="post" name="setupForm" autocomplete="off" role="form" novalidate>
|
|
|
|
|
<input type="password" style="display: none;">
|
|
|
|
|
<input type="hidden" name="_csrf" value="<%= csrf %>"/>
|
2018-06-12 17:22:41 -07:00
|
|
|
<input type="hidden" name="email" value="<%= email %>"/>
|
2017-08-15 11:11:09 +02:00
|
|
|
<input type="hidden" name="resetToken" value="<%= resetToken %>"/>
|
2015-07-20 00:09:47 -07:00
|
|
|
|
2017-08-15 11:11:09 +02:00
|
|
|
<center><p class="has-error"><%= error %></p></center>
|
2016-04-04 13:00:23 +02:00
|
|
|
|
2016-06-02 15:47:58 +02:00
|
|
|
<% if (user && user.username) { %>
|
2017-08-15 11:11:09 +02:00
|
|
|
<div class="form-group"">
|
|
|
|
|
<label class="control-label">Username</label>
|
|
|
|
|
<input type="text" class="form-control" ng-model="username" name="username" readonly required>
|
|
|
|
|
</div>
|
2016-06-02 15:47:58 +02:00
|
|
|
<% } else { %>
|
2017-08-15 11:11:09 +02:00
|
|
|
<div class="form-group" ng-class="{ 'has-error': (setupForm.username.$dirty && setupForm.username.$invalid) }">
|
|
|
|
|
<label class="control-label">Username</label>
|
|
|
|
|
<div class="control-label" ng-show="setupForm.username.$dirty && setupForm.username.$invalid">
|
|
|
|
|
<small ng-show="setupForm.username.$error.minlength">The username is too short</small>
|
|
|
|
|
<small ng-show="setupForm.username.$error.maxlength">The username is too long</small>
|
|
|
|
|
<small ng-show="setupForm.username.$dirty && setupForm.username.$invalid">Not a valid username</small>
|
|
|
|
|
</div>
|
|
|
|
|
<input type="text" class="form-control" ng-model="username" name="username" required autofocus>
|
|
|
|
|
</div>
|
2016-06-02 15:47:58 +02:00
|
|
|
<% } %>
|
2016-04-01 16:23:29 +02:00
|
|
|
|
2017-08-15 11:11:09 +02:00
|
|
|
<div class="form-group">
|
2018-08-05 21:58:07 -07:00
|
|
|
<label class="control-label">Full Name</label>
|
2017-08-15 11:11:09 +02:00
|
|
|
<input type="displayName" class="form-control" ng-model="displayName" name="displayName" required>
|
|
|
|
|
</div>
|
2016-04-01 16:23:29 +02:00
|
|
|
|
2017-08-15 11:11:09 +02:00
|
|
|
<div class="form-group" ng-class="{ 'has-error': (setupForm.password.$dirty && setupForm.password.$invalid) }">
|
|
|
|
|
<label class="control-label">New Password</label>
|
|
|
|
|
<div class="control-label" ng-show="setupForm.password.$dirty && setupForm.password.$invalid">
|
2018-06-11 14:01:40 -07:00
|
|
|
<small ng-show="setupForm.password.$dirty && setupForm.password.$invalid">Password must be atleast 8 characters</small>
|
2017-08-15 11:11:09 +02:00
|
|
|
</div>
|
2019-08-30 12:14:32 +02:00
|
|
|
<input type="password" class="form-control" ng-model="password" name="password" ng-pattern="/^.{8,}$/" required>
|
2017-08-15 11:11:09 +02:00
|
|
|
</div>
|
2016-04-01 16:23:29 +02:00
|
|
|
|
2017-08-15 11:11:09 +02:00
|
|
|
<div class="form-group" ng-class="{ 'has-error': (setupForm.passwordRepeat.$dirty && (password !== passwordRepeat)) }">
|
|
|
|
|
<label class="control-label">Repeat Password</label>
|
|
|
|
|
<div class="control-label" ng-show="setupForm.passwordRepeat.$dirty && (password !== passwordRepeat)">
|
|
|
|
|
<small ng-show="setupForm.passwordRepeat.$dirty && (password !== passwordRepeat)">Passwords don't match</small>
|
|
|
|
|
</div>
|
|
|
|
|
<input type="password" class="form-control" ng-model="passwordRepeat" name="passwordRepeat" required>
|
|
|
|
|
</div>
|
2016-04-01 16:23:29 +02:00
|
|
|
|
2018-08-05 21:58:07 -07:00
|
|
|
<center><input class="btn btn-primary btn-outline" type="submit" value="Setup" ng-disabled="setupForm.$invalid || password !== passwordRepeat"/></center>
|
2017-08-15 11:11:09 +02:00
|
|
|
</form>
|
|
|
|
|
</div>
|
2015-07-20 00:09:47 -07:00
|
|
|
</div>
|
2017-08-15 11:11:09 +02:00
|
|
|
</div>
|
2015-07-20 00:09:47 -07:00
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<% include footer %>
|