Merge pull request #858 from mleanos/admin-users-require-role

Admin users require role
This commit is contained in:
Liran Tal
2015-08-30 21:55:58 +03:00
4 changed files with 58 additions and 5 deletions

View File

@@ -7,22 +7,25 @@
<fieldset>
<div class="form-group" show-errors>
<label for="firstName">First Name</label>
<input type="text" id="firstName" name="firstName" class="form-control" ng-model="user.firstName" placeholder="First Name" required>
<input type="text" id="firstName" name="firstName" class="form-control" ng-model="user.firstName" placeholder="First Name" required />
<div ng-messages="userForm.firstName.$error" role="alert">
<p class="help-block error-text" ng-message="required">First name is required.</p>
</div>
</div>
<div class="form-group" show-errors>
<label for="lastName">Last Name</label>
<input type="text" id="lastName" name="lastName" class="form-control" ng-model="user.lastName" placeholder="Last Name" required>
<input type="text" id="lastName" name="lastName" class="form-control" ng-model="user.lastName" placeholder="Last Name" required />
<div ng-messages="userForm.lastName.$error" role="alert">
<p class="help-block error-text" ng-message="required">Last name is required.</p>
</div>
</div>
<div class="form-group">
<div class="form-group" show-errors>
<label class="control-label" for="roles">Roles</label>
<div class="controls">
<input class="form-control" type="text" name="roles" ng-model="user.roles" id="roles" ng-list />
<input class="form-control" type="text" name="roles" ng-model="user.roles" id="roles" ng-list required />
<div ng-messages="userForm.roles.$error" role="alert">
<p class="help-block error-text" ng-message="required">At least one role is required.</p>
</div>
</div>
</div>
<div class="form-group">

View File

@@ -12,6 +12,7 @@
<div class="list-group">
<a ng-repeat="user in pagedItems" ui-sref="admin.user({userId: user._id})" class="list-group-item">
<h4 class="list-group-item-heading" ng-bind="user.username"></h4>
<p class="list-group-item-text pull-right small" ng-bind="user.roles"></p>
<p class="list-group-item-text" ng-bind="user.email"></p>
</a>
</div>

View File

@@ -85,7 +85,8 @@ var UserSchema = new Schema({
type: String,
enum: ['user', 'admin']
}],
default: ['user']
default: ['user'],
required: 'Please provide at least one role'
},
updated: {
type: Date

View File

@@ -85,6 +85,54 @@ describe('User Model Unit Tests:', function () {
});
});
it('should be able to update an existing user with valid roles without problems', function (done) {
var _user = new User(user);
_user.save(function (err) {
should.not.exist(err);
_user.roles = ['user', 'admin'];
_user.save(function (err) {
should.not.exist(err);
_user.remove(function (err) {
should.not.exist(err);
done();
});
});
});
});
it('should be able to show an error when trying to update an existing user without a role', function (done) {
var _user = new User(user);
_user.save(function (err) {
should.not.exist(err);
_user.roles = [];
_user.save(function (err) {
should.exist(err);
_user.remove(function (err) {
should.not.exist(err);
done();
});
});
});
});
it('should be able to show an error when trying to update an existing user with a invalid role', function (done) {
var _user = new User(user);
_user.save(function (err) {
should.not.exist(err);
_user.roles = ['invalid-user-role-enum'];
_user.save(function (err) {
should.exist(err);
_user.remove(function (err) {
should.not.exist(err);
done();
});
});
});
});
it('should confirm that saving user model doesnt change the password', function (done) {
var _user1 = new User(user1);