Self user role and report access
This commit is contained in:
+1
@@ -44,5 +44,6 @@ public class SelfServiceApiConstants {
|
||||
authenticationTokenParamName));
|
||||
public static final Object[] SUPPORTED_AUTHENTICATION_MODE_PARAMETERS = new Object[] {emailModeParamName,
|
||||
mobileModeParamName};
|
||||
public static final String SELF_SERVICE_USER_ROLE = "Self Service User";
|
||||
|
||||
}
|
||||
|
||||
+11
-1
@@ -58,7 +58,9 @@ import org.apache.fineract.useradministration.domain.AppUser;
|
||||
import org.apache.fineract.useradministration.domain.PasswordValidationPolicy;
|
||||
import org.apache.fineract.useradministration.domain.PasswordValidationPolicyRepository;
|
||||
import org.apache.fineract.useradministration.domain.Role;
|
||||
import org.apache.fineract.useradministration.domain.RoleRepository;
|
||||
import org.apache.fineract.useradministration.domain.UserDomainService;
|
||||
import org.apache.fineract.useradministration.exception.RoleNotFoundException;
|
||||
import org.apache.fineract.useradministration.service.AppUserReadPlatformService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.dao.DataIntegrityViolationException;
|
||||
@@ -85,6 +87,7 @@ public class SelfServiceRegistrationWritePlatformServiceImpl implements SelfServ
|
||||
private SmsMessageScheduledJobService smsMessageScheduledJobService;
|
||||
private final SmsCampaignDropdownReadPlatformService smsCampaignDropdownReadPlatformService;
|
||||
private final AppUserReadPlatformService appUserReadPlatformService;
|
||||
private final RoleRepository roleRepository;
|
||||
|
||||
@Autowired
|
||||
public SelfServiceRegistrationWritePlatformServiceImpl(final SelfServiceRegistrationRepository selfServiceRegistrationRepository,
|
||||
@@ -94,7 +97,7 @@ public class SelfServiceRegistrationWritePlatformServiceImpl implements SelfServ
|
||||
final UserDomainService userDomainService, final GmailBackedPlatformEmailService gmailBackedPlatformEmailService,
|
||||
final SmsMessageRepository smsMessageRepository, SmsMessageScheduledJobService smsMessageScheduledJobService,
|
||||
final SmsCampaignDropdownReadPlatformService smsCampaignDropdownReadPlatformService,
|
||||
final AppUserReadPlatformService appUserReadPlatformService) {
|
||||
final AppUserReadPlatformService appUserReadPlatformService,final RoleRepository roleRepository) {
|
||||
this.selfServiceRegistrationRepository = selfServiceRegistrationRepository;
|
||||
this.fromApiJsonHelper = fromApiJsonHelper;
|
||||
this.selfServiceRegistrationReadPlatformService = selfServiceRegistrationReadPlatformService;
|
||||
@@ -106,6 +109,7 @@ public class SelfServiceRegistrationWritePlatformServiceImpl implements SelfServ
|
||||
this.smsMessageScheduledJobService = smsMessageScheduledJobService;
|
||||
this.smsCampaignDropdownReadPlatformService = smsCampaignDropdownReadPlatformService;
|
||||
this.appUserReadPlatformService = appUserReadPlatformService;
|
||||
this.roleRepository = roleRepository;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -262,6 +266,12 @@ public class SelfServiceRegistrationWritePlatformServiceImpl implements SelfServ
|
||||
final Collection<SimpleGrantedAuthority> authorities = new ArrayList<>();
|
||||
authorities.add(new SimpleGrantedAuthority("DUMMY_ROLE_NOT_USED_OR_PERSISTED_TO_AVOID_EXCEPTION"));
|
||||
final Set<Role> allRoles = new HashSet<>();
|
||||
Role role = this.roleRepository.getRoleByName(SelfServiceApiConstants.SELF_SERVICE_USER_ROLE);
|
||||
if(role != null){
|
||||
allRoles.add(role);
|
||||
}else{
|
||||
throw new RoleNotFoundException(SelfServiceApiConstants.SELF_SERVICE_USER_ROLE);
|
||||
}
|
||||
List<Client> clients = new ArrayList<>(Arrays.asList(client));
|
||||
User user = new User(selfServiceRegistration.getUsername(), selfServiceRegistration.getPassword(), authorities);
|
||||
AppUser appUser = new AppUser(client.getOffice(), user, allRoles, selfServiceRegistration.getEmail(), client.getFirstname(),
|
||||
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
/**
|
||||
* 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.runreport;
|
||||
|
||||
import javax.ws.rs.Consumes;
|
||||
import javax.ws.rs.GET;
|
||||
import javax.ws.rs.Path;
|
||||
import javax.ws.rs.PathParam;
|
||||
import javax.ws.rs.Produces;
|
||||
import javax.ws.rs.core.Context;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
import javax.ws.rs.core.Response;
|
||||
import javax.ws.rs.core.UriInfo;
|
||||
|
||||
import org.apache.fineract.infrastructure.dataqueries.api.RunreportsApiResource;
|
||||
import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Path("/self/runreports")
|
||||
@Component
|
||||
@Scope("singleton")
|
||||
public class SelfRunReportApiResource {
|
||||
|
||||
private final PlatformSecurityContext context;
|
||||
private final RunreportsApiResource runreportsApiResource;
|
||||
|
||||
@Autowired
|
||||
public SelfRunReportApiResource(final PlatformSecurityContext context, final RunreportsApiResource runreportsApiResource) {
|
||||
this.context = context;
|
||||
this.runreportsApiResource = runreportsApiResource;
|
||||
}
|
||||
|
||||
@GET
|
||||
@Path("{reportName}")
|
||||
@Consumes({ MediaType.APPLICATION_JSON })
|
||||
@Produces({ MediaType.APPLICATION_JSON, "text/csv", "application/vnd.ms-excel", "application/pdf", "text/html" })
|
||||
public Response runReport(@PathParam("reportName") final String reportName, @Context final UriInfo uriInfo) {
|
||||
this.context.authenticatedUser();
|
||||
return this.runreportsApiResource.runReport(reportName, uriInfo);
|
||||
}
|
||||
|
||||
}
|
||||
+3
@@ -27,5 +27,8 @@ public interface RoleRepository extends JpaRepository<Role, Long>, JpaSpecificat
|
||||
|
||||
@Query("SELECT COUNT(a) FROM AppUser a JOIN a.roles r WHERE r.id = :roleId AND a.deleted = false")
|
||||
Integer getCountOfRolesAssociatedWithUsers(@Param("roleId") Long roleId);
|
||||
|
||||
@Query("SELECT role FROM Role role WHERE role.name = :name")
|
||||
Role getRoleByName(@Param("name") String name);
|
||||
|
||||
}
|
||||
+4
@@ -28,4 +28,8 @@ public class RoleNotFoundException extends AbstractPlatformResourceNotFoundExcep
|
||||
public RoleNotFoundException(final Long id) {
|
||||
super("error.msg.role.id.invalid", "Role with identifier " + id + " does not exist", id);
|
||||
}
|
||||
|
||||
public RoleNotFoundException(final String name) {
|
||||
super("error.msg.role.name.invalid", "Role with name " + name + " does not exist", name);
|
||||
}
|
||||
}
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
--
|
||||
-- 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.
|
||||
--
|
||||
|
||||
INSERT INTO `m_role` (`name`, `description`, `is_disabled`) VALUES ('Self Service User', 'self service user role', 1);
|
||||
Reference in New Issue
Block a user