| /** |
| * 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 = []; |
| |