blob: dc4509f95f94c0596ea7e3d506217c9ae9b1ebd1 [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
var App = require('app');
var validator = require('utils/validator');
App.User = DS.Model.extend({
userName:DS.attr('string'),
id:function(){
return this.get('userName');
}.property('userName'),
roles:DS.attr('string'),
isLdap:DS.attr('boolean'),
type: function(){
if(this.get('isLdap')){
return 'LDAP';
}
return 'Local';
}.property('isLdap'),
auditItems:DS.hasMany('App.ServiceAudit'),
admin: DS.attr('boolean')
});
App.EditUserForm = App.Form.extend({
className:App.User,
object:function () {
return App.router.get('mainAdminUserEditController.content');
}.property('App.router.mainAdminUserEditController.content'),
fieldsOptions:[
{ name:"userName", displayName:"Username" },
{ name:"old_password", displayName:"Current Password", displayType:"password", isRequired: false },
{ name:"new_password", displayName:"New Password", displayType:"password", isRequired: false },
{ name:"new_passwordRetype", displayName:"Retype New Password", displayType:"password", isRequired: false },
{ name:"admin", displayName:"Admin", displayType:"checkbox", isRequired:false },
{ name:"roles", displayName:"Role", isRequired:false, isHidden:true },
{ name:"isLdap", displayName:"Type", isRequired:false, isHidden:true }
],
fields:[],
disableUsername:function () {
this.getField("userName").set("disabled", "disabled");
}.observes('object'),
disableAdminCheckbox:function () {
var object = this.get('object');
if (object) {
if ((object.get('userName') == App.get('router').getLoginName()) || App.supports.ldapGroupMapping && object.get("isLdap")) {
this.getField("admin").set("disabled", true);
} else {
this.getField("admin").set("disabled", false);
}
}
}.observes('object'),
isValid:function () {
var isValid = this._super();
var thisForm = this;
var newPass = this.get('field.new_password');
var oldPass = this.get('field.old_password');
var passRetype = this.get('field.new_passwordRetype');
if (!validator.empty(newPass.get('value'))) {
if(validator.empty(oldPass.get('value'))){
oldPass.set('errorMessage', this.t('admin.users.editError.requiredField'));
isValid = false;
}
if (newPass.get('value') != passRetype.get('value')) {
passRetype.set('errorMessage', this.t('admin.users.createError.passwordValidation'));
isValid = false;
}
}
return isValid;
},
save: function () {
var object = this.get('object');
var formValues = {};
$.each(this.get('fields'), function () {
formValues[this.get('name')] = this.get('value');
});
$.each(formValues, function (k, v) {
object.set(k, v);
});
//App.store.commit();
this.set('result', 1);
return true;
}
});
App.CreateUserForm = App.Form.extend({
className:App.User,
object:function () {
return App.router.get('mainAdminUserCreateController.content');
}.property('App.router.mainAdminUserCreateController.content'),
fieldsOptions:[
{ name:"userName", displayName:"Username", toLowerCase: function(){var v = this.get('value'); this.set('value', v.toLowerCase())}.observes('value') },
{ name:"password", displayName:"Password", displayType:"password", isRequired: true },
{ name:"passwordRetype", displayName:"Retype Password", displayType:"password", validator:"passwordRetype", isRequired: true },
{ name:"admin", displayName:"Admin", displayType:"checkbox", isRequired:false },
{ name:"roles", displayName:"Role", isRequired:false, isHidden:true }
],
fields:[],
isValid:function () {
var isValid = this._super();
var passField = this.get('field.password');
var passRetype = this.get('field.passwordRetype');
if (!validator.empty(passField.get('value'))) {
if (passField.get('value') != passRetype.get('value')) {
passRetype.set('errorMessage', this.t('admin.users.createError.passwordValidation'));
isValid = false;
}
}
if (isValid) {
var users = App.User.find();
var userNameField = this.getField('userName');
var userName = userNameField.get('value');
if (!validator.isValidUserName(userName)) {
userNameField.set('errorMessage', this.t('users.userName.validationFail'));
isValid = false;
}
if (users.mapProperty('userName').contains(userName)) {
userNameField.set('errorMessage', this.t('admin.users.createError.userNameExists'));
return isValid = false;
}
}
return isValid;
},
save: function () {
var object = this.get('object');
var formValues = {};
$.each(this.get('fields'), function () {
formValues[Ember.String.decamelize(this.get('name'))] = this.get('value');
});
if (this.get('className')) {
App.store.load(this.get('className'), (new Date()).getTime(), formValues);
}
else {
console.log("Please define class name for your form " + this.constructor);
}
this.set('result', 1);
return true;
}
});
App.User.FIXTURES = [];