Repository: incubator-fineract
Updated Branches:
  refs/heads/develop 525e8becb -> b3c4f75f1


Add API to allow self service user to change their password


Project: http://git-wip-us.apache.org/repos/asf/incubator-fineract/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-fineract/commit/b3c4f75f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-fineract/tree/b3c4f75f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-fineract/diff/b3c4f75f

Branch: refs/heads/develop
Commit: b3c4f75f11cea259a2b0ce2fb1f1ec64b1975fec
Parents: 525e8be
Author: Adi Narayana Raju <adi.r...@confluxtechnologies.com>
Authored: Tue Oct 25 14:08:22 2016 +0530
Committer: Adi Narayana Raju <adi.r...@confluxtechnologies.com>
Committed: Tue Oct 25 14:08:22 2016 +0530

----------------------------------------------------------------------
 api-docs/apiLive.htm                            | 40 +++++++++++
 .../self/security/api/SelfUserApiResource.java  | 74 ++++++++++++++++++++
 2 files changed, 114 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/b3c4f75f/api-docs/apiLive.htm
----------------------------------------------------------------------
diff --git a/api-docs/apiLive.htm b/api-docs/apiLive.htm
index f85a5ce..abd6867 100644
--- a/api-docs/apiLive.htm
+++ b/api-docs/apiLive.htm
@@ -3361,6 +3361,14 @@
                                                                <td></td>
                                                        </tr>
                                                        <tr>
+                                                               <td><a 
href="#selfuser">Update User</a></td>
+                                                               
<td>self/user</td>
+                                                               <td></td>
+                                                               <td></td>
+                                                               <td><a 
href="#selfuser">Update User</a></td>
+                                                               <td></td>
+                                                       </tr>
+                                                       <tr>
                                                                <td><a 
href="#selflistclients">Clients</a></td>
                                                                
<td>self/clients</td>
                                                                <td></td>
@@ -42919,6 +42927,38 @@ No Request Body
                                </div>
                        </div>
 
+                       <a id="selfuser" name="selfuser" 
class="old-syle-anchor">&nbsp;</a>
+                       <div class="method-section">
+                               <div class="method-description">
+                                       <h4>Update User</h4>
+                                       <p>This API can be used by Self Service 
user to update their own user information. Currently, "password" and 
"repeatPassword" are the only parameters accepted.</p>
+                               </div>
+                               <div class="method-example">
+                                       <code class="method-declaration">
+PUT https://DomainName/api/v1/self/user
+                                       </code>
+                                       <code class="method-request">
+PUT self/user
+Content-Type: application/json
+
+{
+       "password":"Abcd1234",
+       "repeatPassword":"Abcd1234"
+}
+                                       </code>
+                                       <p>Example response</p>
+<code class="method-response">
+{
+       "officeId": 1,
+       "resourceId": 6,
+       "changes": {
+               "passwordEncoded": 
"6a72a630795be86fe926ce540fc45b6b922fe5ba130f185fe806a26b5e5efcdd"
+       }
+}
+</code>
+                               </div>
+                       </div>
+
                        <a id="selflistclients" name="selflistclients" 
class="old-syle-anchor">&nbsp;</a>
                        <div class="method-section">
                                <div class="method-description">

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/b3c4f75f/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/security/api/SelfUserApiResource.java
----------------------------------------------------------------------
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/security/api/SelfUserApiResource.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/security/api/SelfUserApiResource.java
new file mode 100644
index 0000000..76de0b3
--- /dev/null
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/security/api/SelfUserApiResource.java
@@ -0,0 +1,74 @@
+/**
+ * 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.
+ */
+
+package org.apache.fineract.portfolio.self.security.api;
+
+import java.lang.reflect.Type;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.fineract.infrastructure.core.exception.InvalidJsonException;
+import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper;
+import 
org.apache.fineract.infrastructure.security.service.PlatformSecurityContext;
+import org.apache.fineract.useradministration.api.UsersApiResource;
+import org.apache.fineract.useradministration.domain.AppUser;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import com.google.gson.reflect.TypeToken;
+
+@Path("/self/user")
+@Component
+public class SelfUserApiResource {
+
+        private final UsersApiResource usersApiResource;
+        private final PlatformSecurityContext context;
+        private final FromJsonHelper fromApiJsonHelper;
+        private final Set<String> supportedParameters = new 
HashSet<>(Arrays.asList("password", "repeatPassword"));
+
+        @Autowired
+        public SelfUserApiResource(final UsersApiResource usersApiResource,
+                final PlatformSecurityContext context,
+                final FromJsonHelper fromApiJsonHelper){
+
+                this.usersApiResource = usersApiResource;
+                this.context = context;
+                this.fromApiJsonHelper = fromApiJsonHelper;
+        }
+
+        @PUT
+        public String update(final String apiRequestBodyAsJson) {
+                if (StringUtils.isBlank(apiRequestBodyAsJson)) { throw new 
InvalidJsonException(); }
+
+                final Type typeOfMap = new TypeToken<Map<String, Object>>() 
{}.getType();
+                this.fromApiJsonHelper.checkForUnsupportedParameters(typeOfMap,
+                        apiRequestBodyAsJson,
+                        this.supportedParameters);
+
+                final AppUser appUser = this.context.authenticatedUser();
+                return this.usersApiResource.update(appUser.getId(), 
apiRequestBodyAsJson);
+        }
+
+}

Reply via email to