Przeglądaj źródła

Merge pull request #177 from rkeil-git/master

"[Bug fix for 1031006] Configuration editor will now generate the size of password requested up to 1000 characters"
Jason 8 lat temu
rodzic
commit
c1f68beb76

+ 22 - 8
src/main/angular/src/services/people.service.ts

@@ -21,7 +21,7 @@
  */
 
 
-import { isString, IHttpService, ILogService, IPromise, IQService } from 'angular';
+import { isString, IHttpService, ILogService, IPromise, IQService, IWindowService } from 'angular';
 import { IPerson } from '../models/person.model';
 import IPwmService from './pwm.service';
 import OrgChartData from '../models/orgchart-data.model';
@@ -38,11 +38,22 @@ export interface IPeopleService {
 }
 
 export default class PeopleService implements IPeopleService {
-    static $inject = ['$http', '$log', '$q', 'PwmService' ];
+    PWM_GLOBAL: any;
+
+    static $inject = ['$http', '$log', '$q', 'PwmService', '$window' ];
     constructor(private $http: IHttpService,
                 private $log: ILogService,
                 private $q: IQService,
-                private pwmService: IPwmService) {}
+                private pwmService: IPwmService,
+                $window: IWindowService)
+    {
+        if ($window['PWM_GLOBAL']) {
+            this.PWM_GLOBAL = $window['PWM_GLOBAL'];
+        }
+        else {
+            this.$log.warn('PWM_GLOBAL is not defined on window');
+        }
+    }
 
     autoComplete(query: string): IPromise<IPerson[]> {
         return this.search(query, { 'includeDisplayName': true })
@@ -151,12 +162,15 @@ export default class PeopleService implements IPeopleService {
     search(query: string, params?: any): IPromise<SearchResult> {
         // Deferred object used for aborting requests. See promise.service.ts for more information
         let httpTimeout = this.$q.defer();
-
+        let formID = encodeURIComponent('&pwmFormID=' + this.PWM_GLOBAL['pwmFormID']);
+        // Search window references to PWM_GLOBAL and PWM_MAIN add by legacy PWM code
         let request = this.$http
-            .get(this.pwmService.getServerUrl('search', params), {
-                cache: true,
-                params: { username: query },
-                timeout: httpTimeout.promise
+            .post(this.pwmService.getServerUrl('search') + '&pwmFormID=' + this.PWM_GLOBAL['pwmFormID'], {
+                timeout: httpTimeout.promise,
+                username: query,
+                pwmFormID: formID
+            }, {
+                headers: {'Content-Type': 'multipart/form-data'},
             });
 
         let promise = request.then(

+ 1 - 1
src/main/angular/src/services/promise.service.ts

@@ -3,7 +3,7 @@
  * http://www.pwm-project.org
  *
  * Copyright (c) 2006-2009 Novell, Inc.
- * Copyright (c) 2009-2017 The PWM Project
+ * Copyright (c) 2009-2016 The PWM Project
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by

+ 15 - 2
src/main/java/password/pwm/http/servlet/peoplesearch/PeopleSearchServlet.java

@@ -61,7 +61,7 @@ public abstract class PeopleSearchServlet extends ControlledPwmServlet {
     private static final String PARAM_USERKEY = "userKey";
 
     public enum PeopleSearchActions implements ProcessAction {
-        search(HttpMethod.GET),
+        search(HttpMethod.POST),
         detail(HttpMethod.GET),
         photo(HttpMethod.GET),
         clientData(HttpMethod.GET),
@@ -136,10 +136,23 @@ public abstract class PeopleSearchServlet extends ControlledPwmServlet {
     )
             throws ChaiUnavailableException, PwmUnrecoverableException, IOException, ServletException
     {
-        final String username = pwmRequest.readParameterAsString("username", PwmHttpRequestWrapper.Flag.BypassValidation);
+        String username = "";
+        final String postString = pwmRequest.readRequestBodyAsString();
+        final String[] parser = postString.split(",");
+
+        for(int i = 0; i < parser.length; i++)
+        {
+            if(parser[i].contains("username"))
+            {
+                final String[] value = parser[i].split(":");
+                username = value[1].replace("\"", "");
+                break;
+            }
+        }
         final boolean includeDisplayName = pwmRequest.readParameterAsBoolean("includeDisplayName");
 
         final PeopleSearchDataReader peopleSearchDataReader = new PeopleSearchDataReader(pwmRequest);
+
         final SearchResultBean searchResultBean = peopleSearchDataReader.makeSearchResultBean(username, includeDisplayName);
         final RestResultBean restResultBean = new RestResultBean(searchResultBean);
 

+ 1 - 0
src/main/java/password/pwm/i18n/Message.java

@@ -37,6 +37,7 @@ import java.util.Locale;
  */
 public enum Message implements PwmDisplayBundle {
     Success_PasswordChange(null),
+    Success_ChangedHelpdeskPassword(null),
     Success_SetupResponse(null),
     Success_ClearResponse(null),
     Success_Unknown(null),

+ 1 - 0
src/main/java/password/pwm/util/PwmPasswordRuleValidator.java

@@ -651,6 +651,7 @@ public class PwmPasswordRuleValidator {
         //Check maximum length
         {
             final int passwordMaximumLength = ruleHelper.readIntValue(PwmPasswordRule.MaximumLength);
+
             if (passwordMaximumLength > 0 && passwordLength > passwordMaximumLength) {
                 errorList.add(new ErrorInformation(PwmError.PASSWORD_TOO_LONG));
             }

+ 3 - 0
src/main/java/password/pwm/util/RandomPasswordGenerator.java

@@ -166,6 +166,9 @@ public class RandomPasswordGenerator {
         {
             final Map<String, String> newPolicyMap = new HashMap<>();
             newPolicyMap.putAll(randomGeneratorConfig.getPasswordPolicy().getPolicyMap());
+
+            final String max = newPolicyMap.put(PwmPasswordRule.MaximumLength.getKey(), String.valueOf(randomGeneratorConfig.getMaximumLength()));
+
             if (randomGeneratorConfig.getMinimumLength() > randomGeneratorConfig.getPasswordPolicy().getRuleHelper().readIntValue(PwmPasswordRule.MinimumLength)) {
                 newPolicyMap.put(PwmPasswordRule.MinimumLength.getKey(), String.valueOf(randomGeneratorConfig.getMinimumLength()));
             }

+ 7 - 3
src/main/java/password/pwm/ws/server/rest/RestSetPasswordServer.java

@@ -59,6 +59,7 @@ import java.io.Serializable;
 public class RestSetPasswordServer extends AbstractRestServer {
 
     public static final PwmLogger LOGGER = PwmLogger.forClass(RestSetPasswordServer.class);
+    private static Serializable restResultBeanData;
 
     public static class JsonInputData implements Serializable
     {
@@ -196,10 +197,13 @@ public class RestSetPasswordServer extends AbstractRestServer {
             final RestResultBean restResultBean = new RestResultBean();
             restResultBean.setError(false);
             restResultBean.setData(jsonResultData);
-            restResultBean.setSuccessMessage(Message.getLocalizedMessage(
+            final String msg = Message.getLocalizedMessage(
                     restRequestBean.getPwmSession().getSessionStateBean().getLocale(),
-                    Message.Success_PasswordChange,
-                    restRequestBean.getPwmApplication().getConfig()));
+                    Message.Success_ChangedHelpdeskPassword,
+                    restRequestBean.getPwmApplication().getConfig());
+            String[] strs = jsonResultData.username.split("=");
+            strs = strs[1].split(",");
+            restResultBean.setSuccessMessage(msg + strs[0]);
             return restResultBean.asJsonResponse();
         } catch (PwmException e) {
             LOGGER.error("error during set password REST operation: " + e.getMessage());

+ 2 - 1
src/main/resources/password/pwm/i18n/Message.properties

@@ -157,7 +157,8 @@ Success_ClearResponse=Your secret questions and answers have been successfully r
 Success_CreateGuest=The new guest account has been successfully created.  The guest user will receive a notification if the email address has been entered.  The guest account may still need activation.
 Success_CreateUser=Your new user account has been successfully created.
 Success_NewUserForm=Your account is ready to be created.  Continue when ready.
-Success_PasswordChange=Your password has been changed successfully.
+Success_PasswordChange=The password has been changed successfully.
+Success_ChangedHelpdeskPassword=The password has been changed successfully for user 
 Success_PasswordReset=Password for %1% has been set successfully.
 Success_PasswordSend=Your new password has been sent to %1%.  Please close this window and then login using your new password.
 Success_ResponsesMeetRules=Your answers meet the requirements.  Click Save Answers when ready.