FINERACT-787 add selfServiceRoles template resource

This commit is contained in:
Sidney Wasibani
2019-11-24 22:54:37 -08:00
committed by Michael Vorburger ⛑️
parent a9858b1145
commit c601856ca4
6 changed files with 45 additions and 11 deletions
+14
View File
@@ -37339,6 +37339,20 @@ GET https://DomainName/api/v1/users/template
"id": 1, "id": 1,
"name": "Super user", "name": "Super user",
"description": "This role provides all application permissions." "description": "This role provides all application permissions."
},
{
"id": 2,
"name": "Self Service User",
"description": "self service user role",
"disabled": false
}
],
"selfServiceRoles": [
{
"id": 2,
"name": "Self Service User",
"description": "self service user role",
"disabled": false
} }
] ]
} }
@@ -94,6 +94,7 @@ final class UsersApiResourceSwagger {
} }
public Collection<OfficeData> allowedOffices; public Collection<OfficeData> allowedOffices;
public Collection<RoleData> availableRoles; public Collection<RoleData> availableRoles;
public Collection<RoleData> selfServiceRoles;
} }
@ApiModel(value = "PostUsersRequest") @ApiModel(value = "PostUsersRequest")
@@ -49,6 +49,7 @@ public class AppUserData {
@SuppressWarnings("unused") @SuppressWarnings("unused")
private final Collection<OfficeData> allowedOffices; private final Collection<OfficeData> allowedOffices;
private final Collection<RoleData> availableRoles; private final Collection<RoleData> availableRoles;
private final Collection<RoleData> selfServiceRoles;
private final Collection<RoleData> selectedRoles; private final Collection<RoleData> selectedRoles;
private final StaffData staff; private final StaffData staff;
private final Boolean isSelfServiceUser; private final Boolean isSelfServiceUser;
@@ -79,6 +80,7 @@ public class AppUserData {
this.rowIndex = rowIndex; this.rowIndex = rowIndex;
this.allowedOffices = null; this.allowedOffices = null;
this.availableRoles = null; this.availableRoles = null;
this.selfServiceRoles = null;
this.selectedRoles = null; this.selectedRoles = null;
this.staff = null; this.staff = null;
this.isSelfServiceUser = null; this.isSelfServiceUser = null;
@@ -91,27 +93,30 @@ public class AppUserData {
public static AppUserData template(final AppUserData user, final Collection<OfficeData> officesForDropdown) { public static AppUserData template(final AppUserData user, final Collection<OfficeData> officesForDropdown) {
return new AppUserData(user.id, user.username, user.email, user.officeId, user.officeName, user.firstname, user.lastname, return new AppUserData(user.id, user.username, user.email, user.officeId, user.officeName, user.firstname, user.lastname,
user.availableRoles, user.selectedRoles, officesForDropdown, user.staff, user.passwordNeverExpires, user.isSelfServiceUser); user.availableRoles, user.selfServiceRoles, user.selectedRoles, officesForDropdown, user.staff, user.passwordNeverExpires,
user.isSelfServiceUser);
} }
public static AppUserData template(final Collection<OfficeData> offices, final Collection<RoleData> availableRoles) { public static AppUserData template(final Collection<OfficeData> offices, final Collection<RoleData> availableRoles, final Collection<RoleData> selfServiceRoles) {
return new AppUserData(null, null, null, null, null, null, null, availableRoles, null, offices, null, null, null); return new AppUserData(null, null, null, null, null, null, null, availableRoles, selfServiceRoles, null, offices, null, null, null);
} }
public static AppUserData dropdown(final Long id, final String username) { public static AppUserData dropdown(final Long id, final String username) {
return new AppUserData(id, username, null, null, null, null, null, null, null, null, null, null, null); return new AppUserData(id, username, null, null, null, null, null, null, null, null, null, null, null, null);
} }
public static AppUserData instance(final Long id, final String username, final String email, final Long officeId, public static AppUserData instance(final Long id, final String username, final String email, final Long officeId,
final String officeName, final String firstname, final String lastname, final Collection<RoleData> availableRoles, final String officeName, final String firstname, final String lastname, final Collection<RoleData> availableRoles,
final Collection<RoleData> selectedRoles, final StaffData staff, final Boolean passwordNeverExpire, final Boolean isSelfServiceUser) { final Collection<RoleData> selfServiceRoles, final Collection<RoleData> selectedRoles, final StaffData staff,
return new AppUserData(id, username, email, officeId, officeName, firstname, lastname, availableRoles, selectedRoles, null, staff, final Boolean passwordNeverExpire, final Boolean isSelfServiceUser) {
passwordNeverExpire, isSelfServiceUser); return new AppUserData(id, username, email, officeId, officeName, firstname, lastname, availableRoles, selfServiceRoles, selectedRoles, null,
staff, passwordNeverExpire, isSelfServiceUser);
} }
private AppUserData(final Long id, final String username, final String email, final Long officeId, final String officeName, private AppUserData(final Long id, final String username, final String email, final Long officeId, final String officeName,
final String firstname, final String lastname, final Collection<RoleData> availableRoles, final String firstname, final String lastname, final Collection<RoleData> availableRoles,
final Collection<RoleData> selectedRoles, final Collection<OfficeData> allowedOffices, final StaffData staff, final Collection<RoleData> selfServiceRoles, final Collection<RoleData> selectedRoles,
final Collection<OfficeData> allowedOffices, final StaffData staff,
final Boolean passwordNeverExpire, final Boolean isSelfServiceUser) { final Boolean passwordNeverExpire, final Boolean isSelfServiceUser) {
this.id = id; this.id = id;
this.username = username; this.username = username;
@@ -122,6 +127,7 @@ public class AppUserData {
this.email = email; this.email = email;
this.allowedOffices = allowedOffices; this.allowedOffices = allowedOffices;
this.availableRoles = availableRoles; this.availableRoles = availableRoles;
this.selfServiceRoles = selfServiceRoles;
this.selectedRoles = selectedRoles; this.selectedRoles = selectedRoles;
this.staff = staff; this.staff = staff;
this.passwordNeverExpires = passwordNeverExpire; this.passwordNeverExpires = passwordNeverExpire;
@@ -107,8 +107,9 @@ public class AppUserReadPlatformServiceImpl implements AppUserReadPlatformServic
final Collection<OfficeData> offices = this.officeReadPlatformService.retrieveAllOfficesForDropdown(); final Collection<OfficeData> offices = this.officeReadPlatformService.retrieveAllOfficesForDropdown();
final Collection<RoleData> availableRoles = this.roleReadPlatformService.retrieveAllActiveRoles(); final Collection<RoleData> availableRoles = this.roleReadPlatformService.retrieveAllActiveRoles();
final Collection<RoleData> selfServiceRoles = this.roleReadPlatformService.retrieveAllSelfServiceRoles();
return AppUserData.template(offices, availableRoles); return AppUserData.template(offices, availableRoles, selfServiceRoles);
} }
@Override @Override
@@ -138,7 +139,7 @@ public class AppUserReadPlatformServiceImpl implements AppUserReadPlatformServic
} }
AppUserData retUser = AppUserData.instance(user.getId(), user.getUsername(), user.getEmail(), user.getOffice().getId(), AppUserData retUser = AppUserData.instance(user.getId(), user.getUsername(), user.getEmail(), user.getOffice().getId(),
user.getOffice().getName(), user.getFirstname(), user.getLastname(), availableRoles, selectedUserRoles, linkedStaff, user.getOffice().getName(), user.getFirstname(), user.getLastname(), availableRoles, null, selectedUserRoles, linkedStaff,
user.getPasswordNeverExpires(), user.isSelfServiceUser()); user.getPasswordNeverExpires(), user.isSelfServiceUser());
if(retUser.isSelfServiceUser()){ if(retUser.isSelfServiceUser()){
@@ -185,7 +186,7 @@ public class AppUserReadPlatformServiceImpl implements AppUserReadPlatformServic
} else { } else {
linkedStaff = null; linkedStaff = null;
} }
return AppUserData.instance(id, username, email, officeId, officeName, firstname, lastname, null, selectedRoles, linkedStaff, return AppUserData.instance(id, username, email, officeId, officeName, firstname, lastname, null, null, selectedRoles, linkedStaff,
passwordNeverExpire, isSelfServiceUser); passwordNeverExpire, isSelfServiceUser);
} }
@@ -28,6 +28,8 @@ public interface RoleReadPlatformService {
Collection<RoleData> retrieveAllActiveRoles(); Collection<RoleData> retrieveAllActiveRoles();
Collection<RoleData> retrieveAllSelfServiceRoles();
RoleData retrieveOne(Long roleId); RoleData retrieveOne(Long roleId);
Collection<RoleData> retrieveAppUserRoles(Long appUserId); Collection<RoleData> retrieveAppUserRoles(Long appUserId);
@@ -24,6 +24,7 @@ import java.util.Collection;
import org.apache.fineract.infrastructure.core.domain.JdbcSupport; import org.apache.fineract.infrastructure.core.domain.JdbcSupport;
import org.apache.fineract.infrastructure.core.service.RoutingDataSource; import org.apache.fineract.infrastructure.core.service.RoutingDataSource;
import org.apache.fineract.portfolio.self.registration.SelfServiceApiConstants;
import org.apache.fineract.useradministration.data.RoleData; import org.apache.fineract.useradministration.data.RoleData;
import org.apache.fineract.useradministration.exception.RoleNotFoundException; import org.apache.fineract.useradministration.exception.RoleNotFoundException;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -58,6 +59,15 @@ public class RoleReadPlatformServiceImpl implements RoleReadPlatformService {
return this.jdbcTemplate.query(sql, this.roleRowMapper); return this.jdbcTemplate.query(sql, this.roleRowMapper);
} }
@Override
public Collection<RoleData> retrieveAllSelfServiceRoles() {
final String role = SelfServiceApiConstants.SELF_SERVICE_USER_ROLE;
final String sql = "select " + this.roleRowMapper.schema() + " where r.name = ? order by r.id";
return this.jdbcTemplate.query(sql, new Object[] {role}, this.roleRowMapper);
}
@Override @Override
public RoleData retrieveOne(final Long id) { public RoleData retrieveOne(final Long id) {