Hide certain user profile actions for external ldap users

This commit is contained in:
Johannes Zellner
2019-08-30 13:32:20 +02:00
parent 19c8a01969
commit ea5e0b28da
2 changed files with 82 additions and 66 deletions

View File

@@ -90,69 +90,75 @@
<!-- Modal edit user -->
<div class="modal fade" id="userEditModal" tabindex="-1" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">Edit user {{ useredit.userInfo.username || useredit.userInfo.email }}</h4>
</div>
<div class="modal-body">
<form name="useredit_form" role="form" ng-submit="useredit.submit()" autocomplete="off">
<div class="form-group" ng-class="{ 'has-error': (useredit_form.displayName.$dirty && useredit_form.displayName.$invalid) || (!useredit_form.displayName.$dirty && useredit.error.displayName) }">
<label class="control-label">Full Name</label>
<div class="control-label" ng-show="(!useredit_form.displayName.$dirty && useredit.error.displayName) || (useredit_form.displayName.$dirty && useredit_form.displayName.$invalid) || (!useredit_form.displayName.$dirty && useredit.error.displayName)">
<small ng-show="useredit_form.displayName.$error.required">Name is required</small>
<small ng-show="!useredit_form.displayName.$dirty && useredit.error.displayName">{{ useredit.error.displayName }}</small>
</div>
<input type="text" class="form-control" ng-model="useredit.displayName" name="displayName" required autofocus autocomplete="off">
</div>
<div class="form-group" ng-class="{ 'has-error': (useredit_form.email.$dirty && useredit_form.email.$invalid) || (!useredit_form.email.$dirty && useredit.error.email) }">
<label class="control-label">Primary email</label>
<div class="control-label" ng-show="(!useredit_form.email.$dirty && useredit.error.email) || (useredit_form.email.$dirty && useredit_form.email.$invalid) || (!useredit_form.email.$dirty && useredit.error.email)">
<small ng-show="useredit_form.email.$error.required">An email is required</small>
<small ng-show="useredit_form.email.$error.email">This is not a valid email</small>
<small ng-show="!useredit_form.email.$dirty && useredit.error.email">{{ useredit.error.email }}</small>
</div>
<input type="email" class="form-control" ng-model="useredit.email" name="email" required>
</div>
<div class="form-group" ng-class="{ 'has-error': (useredit_form.fallbackEmail.$dirty && useredit_form.fallbackEmail.$invalid) || (!useredit_form.fallbackEmail.$dirty && useredit.error.fallbackEmail) }">
<label class="control-label">Password recovery email</label>
<div class="control-label" ng-show="(!useredit_form.fallbackEmail.$dirty && useredit.error.fallbackEmail) || (useredit_form.fallbackEmail.$dirty && useredit_form.fallbackEmail.$invalid) || (!useredit_form.fallbackEmail.$dirty && useredit.error.fallbackEmail)">
<small ng-show="useredit_form.fallbackEmail.$error.required">An email is required</small>
<small ng-show="useredit_form.fallbackEmail.$error.fallbackEmail">This is not a valid email</small>
<small ng-show="!useredit_form.fallbackEmail.$dirty && useredit.error.fallbackEmail">{{ useredit.error.fallbackEmail }}</small>
</div>
<input type="fallbackEmail" class="form-control" ng-model="useredit.fallbackEmail" name="fallbackEmail" required>
</div>
<div class="form-group">
<label class="control-label">Groups</label>
<div class="control-label">
<div ng-show="groups.length === 0">No groups available.</div>
<multiselect ng-show="groups.length !== 0" ng-model="useredit.selectedGroups" options="group.name for group in groups" data-compare-by="name" data-multiple="true"></multiselect>
</div>
</div>
<div class="form-group" ng-hide="isMe(useredit.userInfo)">
<div class="checkbox">
<label>
<input type="checkbox" ng-model="useredit.admin"> User is an <a href="https://cloudron.io/documentation/user-management/#administrators" target="_blank">administrator</a>
</label>
</div>
</div>
<div class="form-group" ng-hide="isMe(useredit.userInfo)">
<div class="checkbox">
<label>
<input type="checkbox" ng-model="useredit.active"> User is active</a>
</label>
</div>
</div>
<input class="hide" type="submit" ng-disabled="useredit_form.$invalid || useredit.busy"/>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-success" ng-click="useredit.submit()" ng-disabled="useredit_form.$invalid || useredit.busy"><i class="fa fa-circle-notch fa-spin" ng-show="useredit.busy"></i> Save</button>
</div>
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">Edit user {{ useredit.userInfo.username || useredit.userInfo.email }}</h4>
</div>
<div class="modal-body">
<div ng-show="useredit.source">
<p class="text-warning">This user is synced from the external LDAP directory.</p>
<p><label>Display Name</label><br/>{{ useredit.displayName }}</p>
<p><label>Email</label><br/>{{ useredit.email }}</p>
</div>
<form name="useredit_form" role="form" ng-submit="useredit.submit()" autocomplete="off">
<div class="form-group" ng-hide="useredit.source" ng-class="{ 'has-error': (useredit_form.displayName.$dirty && useredit_form.displayName.$invalid) || (!useredit_form.displayName.$dirty && useredit.error.displayName) }">
<label class="control-label">Display Name</label>
<div class="control-label" ng-show="(!useredit_form.displayName.$dirty && useredit.error.displayName) || (useredit_form.displayName.$dirty && useredit_form.displayName.$invalid) || (!useredit_form.displayName.$dirty && useredit.error.displayName)">
<small ng-show="useredit_form.displayName.$error.required">Name is required</small>
<small ng-show="!useredit_form.displayName.$dirty && useredit.error.displayName">{{ useredit.error.displayName }}</small>
</div>
<input type="text" class="form-control" ng-model="useredit.displayName" name="displayName" required autofocus autocomplete="off">
</div>
<div class="form-group" ng-hide="useredit.source" ng-class="{ 'has-error': (useredit_form.email.$dirty && useredit_form.email.$invalid) || (!useredit_form.email.$dirty && useredit.error.email) }">
<label class="control-label">Primary email</label>
<div class="control-label" ng-show="(!useredit_form.email.$dirty && useredit.error.email) || (useredit_form.email.$dirty && useredit_form.email.$invalid) || (!useredit_form.email.$dirty && useredit.error.email)">
<small ng-show="useredit_form.email.$error.required">An email is required</small>
<small ng-show="useredit_form.email.$error.email">This is not a valid email</small>
<small ng-show="!useredit_form.email.$dirty && useredit.error.email">{{ useredit.error.email }}</small>
</div>
<input type="email" class="form-control" ng-model="useredit.email" name="email" required>
</div>
<div class="form-group" ng-hide="useredit.source" ng-class="{ 'has-error': (useredit_form.fallbackEmail.$dirty && useredit_form.fallbackEmail.$invalid) || (!useredit_form.fallbackEmail.$dirty && useredit.error.fallbackEmail) }">
<label class="control-label">Password recovery email</label>
<div class="control-label" ng-show="(!useredit_form.fallbackEmail.$dirty && useredit.error.fallbackEmail) || (useredit_form.fallbackEmail.$dirty && useredit_form.fallbackEmail.$invalid) || (!useredit_form.fallbackEmail.$dirty && useredit.error.fallbackEmail)">
<small ng-show="useredit_form.fallbackEmail.$error.required">An email is required</small>
<small ng-show="useredit_form.fallbackEmail.$error.fallbackEmail">This is not a valid email</small>
<small ng-show="!useredit_form.fallbackEmail.$dirty && useredit.error.fallbackEmail">{{ useredit.error.fallbackEmail }}</small>
</div>
<input type="fallbackEmail" class="form-control" ng-model="useredit.fallbackEmail" name="fallbackEmail" required>
</div>
<div class="form-group">
<label class="control-label">Groups</label>
<div class="control-label">
<div ng-show="groups.length === 0">No groups available.</div>
<multiselect ng-show="groups.length !== 0" ng-model="useredit.selectedGroups" options="group.name for group in groups" data-compare-by="name" data-multiple="true"></multiselect>
</div>
</div>
<div class="form-group" ng-hide="isMe(useredit.userInfo)">
<div class="checkbox">
<label>
<input type="checkbox" ng-model="useredit.admin"> User is an <a href="https://cloudron.io/documentation/user-management/#administrators" target="_blank">administrator</a>
</label>
</div>
</div>
<div class="form-group" ng-hide="isMe(useredit.userInfo)">
<div class="checkbox">
<label>
<input type="checkbox" ng-model="useredit.active"> User is active</a>
</label>
</div>
</div>
<input class="hide" type="submit" ng-disabled="useredit_form.$invalid || useredit.busy"/>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-success" ng-click="useredit.submit()" ng-disabled="useredit_form.$invalid || useredit.busy"><i class="fa fa-circle-notch fa-spin" ng-show="useredit.busy"></i> Save</button>
</div>
</div>
</div>
</div>
<!-- Modal add group -->
@@ -396,7 +402,7 @@
</td>
<td class="text-right no-wrap" style="vertical-align: bottom">
<button ng-show="!isMe(user)" class="btn btn-xs btn-default" ng-click="invitation.show(user)" uib-tooltip="Reset password link"><i class="fa fa-paper-plane"></i></button>
<button ng-show="!isMe(user)" class="btn btn-xs btn-default" ng-hide="user.source" ng-click="invitation.show(user)" uib-tooltip="Reset password link"><i class="fa fa-paper-plane"></i></button>
<button class="btn btn-xs btn-default" ng-click="useredit.show(user)" uib-tooltip="Edit User"><i class="fa fa-pencil-alt"></i></button>
<button ng-show="!isMe(user)" class="btn btn-xs btn-danger" ng-click="userremove.show(user)" uib-tooltip="Remove User"><i class="far fa-trash-alt"></i></button>
</td>
@@ -463,7 +469,9 @@
<div class="row">
<div class="col-md-12">
<p>
This option allows to use an external LDAP or ActiveDirectory service for user management. Users from the LDAP directory will be synced into the Cloudron user management.
This option allows to use an external LDAP or ActiveDirectory service for user management.<br/>
<br/>
Users from the LDAP directory will be synced into the Cloudron user management.
Those users will be able to login to apps using the passwored stored in the LDAP service and thus won't be able to change their password inside Cloudron.
The same applies for their email address.
</p>