Implement new invite flow

This commit is contained in:
Johannes Zellner
2021-10-27 19:57:57 +02:00
parent e1bc2b7dfa
commit eee5b87a38
3 changed files with 50 additions and 31 deletions
+17 -13
View File
@@ -346,7 +346,7 @@
<div class="input-group">
<input type="text" id="passwordResetLinkInput" class="form-control" ng-value="passwordReset.resetLink" readonly/>
<span class="input-group-btn">
<button class="btn btn-primary" id="setupLinkButton" type="button" data-clipboard-target="#passwordResetLinkInput"><i class="fa fa-clipboard"></i></button>
<button class="btn btn-primary" type="button" data-clipboard-target="#passwordResetLinkInput"><i class="fa fa-clipboard"></i></button>
</span>
</div>
</div>
@@ -354,7 +354,7 @@
<div class="form-group">
<label class="control-label">{{ 'users.passwordResetDialog.descriptionEmail' | tr }}</label>
<div class="input-group">
<input type="email" id="passwordResetEmailInput" class="form-control" ng-value="passwordReset.email"/>
<input type="email" class="form-control" ng-value="passwordReset.email"/>
<span class="input-group-btn">
<button type="button" class="btn btn-primary" ng-click="passwordReset.sendEmail()" ng-disabled="passwordReset.busy"><i class="fa fa-circle-notch fa-spin" ng-show="passwordReset.busy"></i> {{ 'users.passwordResetDialog.sendAction' | tr }}</button>
</span>
@@ -375,24 +375,28 @@
<div class="modal-header">
<h4 class="modal-title">{{ 'users.invitationDialog.title' | tr:{ username: (invitation.user.username || invitation.user.email) } }}</h4>
</div>
<div class="modal-body">
<div ng-hide="invitation.inviteLink">
<p>{{ 'users.invitationDialog.inviteLinkExplanation' | tr }}</p>
</div>
<div ng-show="invitation.inviteLink">
<p>{{ 'users.invitationDialog.description' | tr:{ email: invitation.user.fallbackEmail } }}</p>
<div class="input-group" style="margin-bottom: 10px">
<div class="modal-body"><div class="form-group">
<label class="control-label">{{ 'users.invitationDialog.descriptionLink' | tr }}</label>
<div class="input-group">
<input type="text" id="invitationLinkInput" class="form-control" ng-value="invitation.inviteLink" readonly/>
<span class="input-group-btn">
<button class="btn btn-default" id="setupLinkButton" type="button" data-clipboard-target="#invitationLinkInput"><i class="fa fa-clipboard"></i></button>
<button class="btn btn-primary" type="button" data-clipboard-target="#invitationLinkInput"><i class="fa fa-clipboard"></i></button>
</span>
</div>
</div>
<br/>
<div class="form-group">
<label class="control-label">{{ 'users.invitationDialog.descriptionEmail' | tr }}</label>
<div class="input-group">
<input type="email" class="form-control" ng-value="invitation.email"/>
<span class="input-group-btn">
<button type="button" class="btn btn-primary" ng-click="invitation.sendEmail()" ng-disabled="invitation.busy"><i class="fa fa-circle-notch fa-spin" ng-show="invitation.busy"></i> {{ 'users.invitationDialog.sendAction' | tr }}</button>
</span>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal" ng-hide="invitation.inviteLink">{{ 'main.dialog.cancel' | tr }}</button>
<button type="button" class="btn btn-default" data-dismiss="modal" ng-show="invitation.inviteLink">{{ 'main.dialog.close' | tr }}</button>
<button type="button" class="btn btn-success" ng-click="invitation.submit()" ng-hide="invitation.inviteLink" ng-disabled="invitation.busy"><i class="fa fa-circle-notch fa-spin" ng-show="invitation.busy"></i> {{ 'users.invitationDialog.newLinkAction' | tr }}</button>
<button type="button" class="btn btn-default" data-dismiss="modal">{{ 'main.dialog.close' | tr }}</button>
</div>
</div>
</div>
+15 -9
View File
@@ -215,7 +215,7 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio
if (error) return console.error(error);
if ($scope.useradd.sendInvite) Client.sendInvite(userId, function (error) { if (error) console.error('Failed to send invite.', error); });
if ($scope.useradd.sendInvite) Client.sendInviteEmail(userId, user.email, function (error) { if (error) console.error('Failed to send invite.', error); });
refresh();
refreshAllUsers();
@@ -575,24 +575,30 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio
busy: false,
inviteLink: '',
user: null,
email: '',
show: function (user) {
$scope.invitation.user = user;
$scope.invitation.inviteLink = '';
$scope.invitation.busy = false;
$scope.invitation.email = user.fallbackEmail || user.email;
$('#invitationModal').modal('show');
Client.getInviteLink(user.id, function (error, result) {
if (error) return console.error('Failed to get invite link.', error);
$scope.invitation.resetLink = result.inviteLink;
$('#invitationModal').modal('show');
});
},
submit: function () {
sendEmail: function () {
$scope.invitation.busy = true;
Client.sendInvite($scope.invitation.user.id, function (error, result) {
Client.sendInviteEmail($scope.invitation.user.id, $scope.invitation.email, function (error) {
if (error) return console.error('Failed to send invite email.', error);
$scope.invitation.busy = false;
if (error) return console.error(error);
$scope.invitation.inviteLink = result.inviteLink;
$('#invitationModal').modal('hide');
});
}
};