diff --git a/js/PasswdContentPanel.js b/js/PasswdContentPanel.js deleted file mode 100644 index a282132..0000000 --- a/js/PasswdContentPanel.js +++ /dev/null @@ -1,34 +0,0 @@ -Ext.namespace('Zarafa.plugins.passwd'); - -/** - * @class Zarafa.plugins.passwd.PasswdContentPanel - * @extends Zarafa.core.ui.ContentPanel - * - * Content panel that will layout the container - */ -Zarafa.plugins.passwd.PasswdContentPanel = Ext.extend(Zarafa.core.ui.ContentPanel, { - - /** - * @constructor - * @param {Object} config configuration object that needs to be used when creating this dialog - */ - constructor : function(config) - { - config = config || {}; - - Ext.applyIf(config, { - xtype : 'zarafa.passwdcontentpanel', - layout : 'fit', - height : 175, - width : 400, - title : _('Change password'), - items : [{ - xtype : 'zarafa.passwdpanel' - }] - }); - - Zarafa.plugins.passwd.PasswdContentPanel.superclass.constructor.apply(this, arguments); - } -}); - -Ext.reg('zarafa.passwdcontentpanel', Zarafa.plugins.passwd.PasswdContentPanel); \ No newline at end of file diff --git a/js/PasswdPanel.js b/js/PasswdPanel.js deleted file mode 100644 index 1bb2476..0000000 --- a/js/PasswdPanel.js +++ /dev/null @@ -1,129 +0,0 @@ -Ext.namespace('Zarafa.plugins.passwd'); - -/** - * @class Zarafa.plugins.passwd.PasswdPanel - * @extends Ext.form.FormPanel - * - * Panel which holds a form that will be used to change the password - */ -Zarafa.plugins.passwd.PasswdPanel = Ext.extend(Ext.form.FormPanel, { - /** - * @property - * @type Ext.LoadMask - * Save mask that will be displayed when request has been sent to server for password change - * and waiting for the response. - */ - saveMask : undefined, - - /** - * @constructor - * @param {Object} config configuration object that needs to be used when creating this dialog - */ - constructor : function(config) - { - config = config || {}; - - Ext.applyIf(config, { - xtype : 'zarafa.passwdpanel', - labelWidth : 150, - defaults : { - width : 200 - }, - items : [{ - xtype : 'displayfield', - ref : 'userNameField', - fieldLabel : 'User name' - }, { - xtype : 'textfield', - ref : 'oldPasswdField', - fieldLabel : 'Current password', - inputType : 'password' - }, { - xtype : 'textfield', - ref : 'newPasswdField', - fieldLabel : 'New password', - inputType : 'password' - }, { - xtype : 'textfield', - ref : 'newPasswdRepeatField', - fieldLabel : 'Retype new password', - inputType : 'password' - }], - buttons : [{ - text : 'Ok', - handler : this.onOk, - scope : this - }, { - text : 'Cancel', - handler : this.onCancel, - scope : this - }] - }); - - Zarafa.plugins.passwd.PasswdPanel.superclass.constructor.apply(this, arguments); - - this.on('afterrender', this.initialize, this); - }, - - /** - * Function will initialize this dialog with some default values and will - * also create object of {@link #saveMask}. - */ - initialize : function() - { - this.userNameField.setValue(container.getUser().getUserName()); - - this.saveMask = new Ext.LoadMask(this.getEl(), { - msg : _('Saving please wait ...') - }) - }, - - /** - * Handler function that will be called when user presses ok button - * to change password. - */ - onOk : function() - { - // show load mask - this.saveMask.show(); - - // send request - container.getRequest().singleRequest('passwdmodule', 'save', { - username : this.userNameField.getValue(), - current_password : this.oldPasswdField.getValue(), - new_password : this.newPasswdField.getValue(), - new_password_repeat : this.newPasswdRepeatField.getValue() - }, new Zarafa.plugins.passwd.data.PasswdResponseHandler({ - callbackFn : this.callbackFn, - scope : this - })); - }, - - /** - * Handler function that will be called when user presses cancel button - * to close the dialog. - */ - onCancel : function() - { - // close the dialog - this.dialog.close(); - }, - - /** - * Callback function that will be executed after response is received from server. - * @param {Boolean} success boolean to indicate response contains success/failure data. - * @param {Object} response response sent by server. - */ - callbackFn : function(success, response) - { - // hide load mask - this.saveMask.hide(); - - // close the dialog - if(success) { - this.dialog.close(); - } - } -}); - -Ext.reg('zarafa.passwdpanel', Zarafa.plugins.passwd.PasswdPanel); \ No newline at end of file diff --git a/js/PasswdPlugin.js b/js/PasswdPlugin.js index 6aaec5c..40fb570 100644 --- a/js/PasswdPlugin.js +++ b/js/PasswdPlugin.js @@ -18,77 +18,29 @@ Zarafa.plugins.passwd.PasswdPlugin = Ext.extend(Zarafa.core.Plugin, { { Zarafa.plugins.passwd.PasswdPlugin.superclass.initPlugin.apply(this, arguments); - this.registerInsertionPoint('main.maintabbar.right', this.putTabbarButton, this); - - // Register common specific dialog types - Zarafa.core.data.SharedComponentType.addProperty('plugins.passwd.passwdpanel'); + // Register categories for the settings + this.registerInsertionPoint('context.settings.categories', this.createSettingsCategory, this); }, /** - * Bid for the type of shared component and the given record. - * @param {Zarafa.core.data.SharedComponentType} type Type of component a context can bid for. - * @param {Ext.data.Record} record Optionally passed record. - * @return {Number} The bid for the shared component - */ - bidSharedComponent: function(type, record) - { - var bid = -1; - - switch (type) { - // Bid for password dialog - case Zarafa.core.data.SharedComponentType['plugins.passwd.passwdpanel']: - bid = 1; - break; - } - - return bid; - }, - - /** - * Will return the reference to the shared component. - * Based on the type of component requested a component is returned. - * @param {Zarafa.core.data.SharedComponentType} type Type of component a context can bid for. - * @param {Ext.data.Record} record Optionally passed record. - * @return {Ext.Component} Component - */ - getSharedComponent: function(type, record) - { - var component; - - switch (type) { - case Zarafa.core.data.SharedComponentType['plugins.passwd.passwdpanel']: - component = Zarafa.plugins.passwd.PasswdContentPanel; - break; - } - - return component; - }, - - /** - * Create the button to add to the insertion point as called - * by init(). - * @return A struct with the necessary configuration for the button. + * Create the delegate {@link Zarafa.settings.ui.SettingsCategory Settings Category} + * to the {@link Zarafa.settings.SettingsContext}. This will create new + * {@link Zarafa.settings.ui.SettingsCategoryTab tabs} for the + * {@link Zarafa.calendar.ui.SettingsPasswdCategory Password} + * in the {@link Zarafa.settings.ui.SettingsCategoryWidgetPanel Widget Panel}. + * @param {String} insertionName insertion point name that is currently populated + * @param {Zarafa.settings.ui.SettingsMainPanel} settingsMainPanel settings main panel + * which is populating this insertion point + * @param {Zarafa.settings.SettingsContext} settingsContext settings context + * @return {Array} configuration object for the categories to register * @private */ - putTabbarButton : function() + createSettingsCategory : function(insertionName, settingsMainPanel, settingsContext) { return { - text : _('Change Password'), - handler : this.clickPasswdButton + xtype : 'zarafa.settingspasswdcategory', + settingsContext : settingsContext }; - }, - - /** - * Trigger function called when the user clicks the button in the - * main tab bar. - * @private - */ - clickPasswdButton : function() - { - var componentType = Zarafa.core.data.SharedComponentType['plugins.passwd.passwdpanel']; - Zarafa.core.data.UIFactory.openLayerComponent(componentType, undefined, { - modal : true - }); } }); diff --git a/manifest.xml b/manifest.xml index 53b8cc3..bea5081 100644 --- a/manifest.xml +++ b/manifest.xml @@ -6,7 +6,7 @@ Passwd Password Changer Plugin Saket Patel - http://www.zarafa.com + https://github.com/silentsakky Change your password from zarafa webapp @@ -36,14 +36,12 @@ js/passwd.js js/passwd-debug.js js/PasswdPlugin.js - js/PasswdContentPanel.js - js/PasswdPanel.js + js/settings/SettingsPasswdCategory.js + js/settings/SettingsPasswdWidget.js + js/settings/PasswdPanel.js js/data/PasswdResponseHandler.js js/ABOUT.js - diff --git a/php/class.passwdmodule.php b/php/class.passwdmodule.php index cf72a71..4815c19 100644 --- a/php/class.passwdmodule.php +++ b/php/class.passwdmodule.php @@ -44,7 +44,7 @@ class PasswdModule extends Module $errorMessage = _('No data received.'); } - if(empty($data['username']) || empty($data['current_password']) || empty($data['new_password']) || empty($data['new_password_repeat'])) { + if(empty($data['username'])) { $errorMessage = _('User name is empty.'); } @@ -160,9 +160,9 @@ class PasswdModule extends Module $passwd = $data['new_password']; $passwdRepeat = $data['new_password_repeat']; - $passwd_cmd = "/usr/bin/zarafa-passwd -u %s -o %s -p %s"; - if($this->checkPasswordStrenth($passwd)) { + $passwd_cmd = "/usr/bin/zarafa-passwd -u %s -o %s -p %s"; + // all information correct, change password $cmd = sprintf($passwd_cmd, $data['username'], $data['current_password'], $passwd); exec($cmd, $arrayout, $retval); @@ -176,7 +176,7 @@ class PasswdModule extends Module )); } else { $errorMessage = _('Password is not changed.'); - } + } } else { $errorMessage = _('Password is weak.'); } @@ -203,6 +203,7 @@ class PasswdModule extends Module */ public function checkPasswordStrenth($password) { + return true; // @FIXME should be moved to client side if (preg_match("#.*^(?=.{8,20})(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9]).*$#", $password)) { return true; diff --git a/php/plugin.passwd.php b/php/plugin.passwd.php index ef8fe17..bec8323 100644 --- a/php/plugin.passwd.php +++ b/php/plugin.passwd.php @@ -4,7 +4,7 @@ * * Allows to change user password from webapp. * - * Author: Saket patel + * Author: Saket patel */ class Pluginpasswd extends Plugin {