[Users | Trunk]: Add methods for: 1. Get invited users. 2. Delete a verification. 3. Cancel invitation for a user.
This commit is contained in:
parent
d909d6610a
commit
18f34014d9
|
@ -33,8 +33,6 @@ public class RegistryService {
|
||||||
@Autowired
|
@Autowired
|
||||||
private VerificationUtils verificationUtils;
|
private VerificationUtils verificationUtils;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Subscribe to type(Community, etc.) with id(ee, egi, etc.)
|
* Subscribe to type(Community, etc.) with id(ee, egi, etc.)
|
||||||
*
|
*
|
||||||
|
@ -114,6 +112,39 @@ public class RegistryService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cancel invitation to user with email for managing a type(Community, etc.) with id(ee, egi, etc.)
|
||||||
|
*
|
||||||
|
* */
|
||||||
|
@Path("/invite/{type}/{id}/manager/{email}")
|
||||||
|
@DELETE
|
||||||
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
|
@PreAuthorize("hasAnyAuthority(@AuthoritiesService.SUPER_ADMIN, @AuthoritiesService.USER_ADMIN, @AuthoritiesService.PORTAL_ADMIN, " +
|
||||||
|
"@AuthoritiesService.curator(#type), @AuthoritiesService.manager(#type, #id))")
|
||||||
|
public Response cancelUserInvitations(@PathParam("type") String type, @PathParam("id") String id, @PathParam("email") String email) {
|
||||||
|
Integer couId = calls.getCouId(type, id);
|
||||||
|
if (couId != null) {
|
||||||
|
verificationUtils.deleteUserVerifications(email, type, id);
|
||||||
|
return Response.status(HttpStatus.OK.value()).entity(jsonUtils.createResponse("Invitations have been deleted").toString()).type(MediaType.APPLICATION_JSON).build();
|
||||||
|
} else {
|
||||||
|
return Response.status(HttpStatus.NOT_FOUND.value()).entity(jsonUtils.createResponse("Role has not been found").toString()).type(MediaType.APPLICATION_JSON).build();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the invited managers for a type(Community, etc.) with id(ee, egi, etc.)
|
||||||
|
*
|
||||||
|
* */
|
||||||
|
@Path("/invite/{type}/{id}/manager/")
|
||||||
|
@GET
|
||||||
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
|
@PreAuthorize("hasAnyAuthority(@AuthoritiesService.SUPER_ADMIN, @AuthoritiesService.USER_ADMIN, @AuthoritiesService.PORTAL_ADMIN, " +
|
||||||
|
"@AuthoritiesService.curator(#type), @AuthoritiesService.manager(#type, #id))")
|
||||||
|
public Response getInvitedManagers(@PathParam("type") String type, @PathParam("id") String id) {
|
||||||
|
JsonArray invited = verificationUtils.getInvitedUsers(type, id);
|
||||||
|
return Response.status(HttpStatus.OK.value()).entity(jsonUtils.createResponse(invited).toString()).type(MediaType.APPLICATION_JSON).build();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the verification with a specific id only if it refers to the logged in user
|
* Get the verification with a specific id only if it refers to the logged in user
|
||||||
*
|
*
|
||||||
|
@ -135,6 +166,24 @@ public class RegistryService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete the verification with a specific id.
|
||||||
|
*
|
||||||
|
* */
|
||||||
|
@Path("verification/{id}")
|
||||||
|
@DELETE
|
||||||
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
|
@PreAuthorize("hasAnyAuthority(@AuthoritiesService.SUPER_ADMIN, @AuthoritiesService.USER_ADMIN," +
|
||||||
|
"@AuthoritiesService.PORTAL_ADMIN, @AuthoritiesService.curator(#type), @AuthoritiesService.manager(#type, #id))")
|
||||||
|
public Response deleteVerification(@PathParam("id") String id) {
|
||||||
|
if (verificationUtils.getVerification(id) != null) {
|
||||||
|
verificationUtils.deleteVerification(id);
|
||||||
|
return Response.status(HttpStatus.OK.value()).entity(jsonUtils.createResponse(jsonUtils.createResponse("Verification deleted")).toString()).type(MediaType.APPLICATION_JSON).build();
|
||||||
|
} else {
|
||||||
|
return Response.status(HttpStatus.NOT_FOUND.value()).entity(jsonUtils.createResponse(jsonUtils.createResponse("Verification has not been found")).toString()).type(MediaType.APPLICATION_JSON).build();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Verify the verification with the specific id, if the code is correct and it refers to the logged in user.
|
* Verify the verification with the specific id, if the code is correct and it refers to the logged in user.
|
||||||
* Manager role is assigned to this user, along with the member role.
|
* Manager role is assigned to this user, along with the member role.
|
||||||
|
@ -151,7 +200,7 @@ public class RegistryService {
|
||||||
if (coPersonId != null) {
|
if (coPersonId != null) {
|
||||||
if (coPersonId.equals(calls.getCoPersonIdByIdentifier())) {
|
if (coPersonId.equals(calls.getCoPersonIdByIdentifier())) {
|
||||||
if (managerVerification.getVerificationCode().equals(code)) {
|
if (managerVerification.getVerificationCode().equals(code)) {
|
||||||
verificationUtils.deleteVerification(managerVerification.getId());
|
verificationUtils.deleteRelatedVerifications(managerVerification);
|
||||||
Integer couId = calls.getCouId(managerVerification.getType(), managerVerification.getEntity());
|
Integer couId = calls.getCouId(managerVerification.getType(), managerVerification.getEntity());
|
||||||
if (couId != null) {
|
if (couId != null) {
|
||||||
Integer role = calls.getRoleId(coPersonId, couId);
|
Integer role = calls.getRoleId(coPersonId, couId);
|
||||||
|
@ -212,8 +261,8 @@ public class RegistryService {
|
||||||
@Path("/{type}/{id}/subscribers")
|
@Path("/{type}/{id}/subscribers")
|
||||||
@GET
|
@GET
|
||||||
@Produces(MediaType.APPLICATION_JSON)
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
/* @PreAuthorize("hasAnyAuthority(@AuthoritiesService.SUPER_ADMIN, @AuthoritiesService.PORTAL_ADMIN," +
|
@PreAuthorize("hasAnyAuthority(@AuthoritiesService.SUPER_ADMIN, @AuthoritiesService.PORTAL_ADMIN," +
|
||||||
"@AuthoritiesService.curator(#type), @AuthoritiesService.manager(#type, #id))")*/
|
"@AuthoritiesService.curator(#type), @AuthoritiesService.manager(#type, #id))")
|
||||||
public Response getSubscribers(@PathParam("type") String type, @PathParam("id") String id) {
|
public Response getSubscribers(@PathParam("type") String type, @PathParam("id") String id) {
|
||||||
Integer couId = calls.getCouId(type, id);
|
Integer couId = calls.getCouId(type, id);
|
||||||
JsonArray subscribers = calls.getUserNamesByCouId(couId, false);
|
JsonArray subscribers = calls.getUserNamesByCouId(couId, false);
|
||||||
|
@ -227,8 +276,8 @@ public class RegistryService {
|
||||||
@Path("/{type}/{id}/subscribers/email")
|
@Path("/{type}/{id}/subscribers/email")
|
||||||
@GET
|
@GET
|
||||||
@Produces(MediaType.APPLICATION_JSON)
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
/* @PreAuthorize("hasAnyAuthority(@AuthoritiesService.SUPER_ADMIN, @AuthoritiesService.PORTAL_ADMIN," +
|
@PreAuthorize("hasAnyAuthority(@AuthoritiesService.SUPER_ADMIN, @AuthoritiesService.PORTAL_ADMIN," +
|
||||||
"@AuthoritiesService.curator(#type), @AuthoritiesService.manager(#type, #id))")*/
|
"@AuthoritiesService.curator(#type), @AuthoritiesService.manager(#type, #id))")
|
||||||
public Response getSubscribersEmail(@PathParam("type") String type, @PathParam("id") String id) {
|
public Response getSubscribersEmail(@PathParam("type") String type, @PathParam("id") String id) {
|
||||||
Integer couId = calls.getCouId(type, id);
|
Integer couId = calls.getCouId(type, id);
|
||||||
JsonArray subscribers = calls.getUserEmailByCouId(couId, false);
|
JsonArray subscribers = calls.getUserEmailByCouId(couId, false);
|
||||||
|
|
|
@ -5,8 +5,10 @@ import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.google.gson.JsonArray;
|
import com.google.gson.JsonArray;
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
|
import com.google.gson.JsonParser;
|
||||||
import eu.dnetlib.openaire.user.dao.SQLMigrationUserDAO;
|
import eu.dnetlib.openaire.user.dao.SQLMigrationUserDAO;
|
||||||
import eu.dnetlib.openaire.user.ldap.MUserActionsLDAP;
|
import eu.dnetlib.openaire.user.ldap.MUserActionsLDAP;
|
||||||
|
import eu.dnetlib.openaire.user.login.utils.AuthoritiesMapper;
|
||||||
import eu.dnetlib.openaire.user.pojos.migration.LDAPUser;
|
import eu.dnetlib.openaire.user.pojos.migration.LDAPUser;
|
||||||
import eu.dnetlib.openaire.user.store.DataSourceConnector;
|
import eu.dnetlib.openaire.user.store.DataSourceConnector;
|
||||||
import org.apache.commons.io.IOUtils;
|
import org.apache.commons.io.IOUtils;
|
||||||
|
@ -124,11 +126,19 @@ public class Test3Service {
|
||||||
HttpHeaders headers = new HttpHeaders();
|
HttpHeaders headers = new HttpHeaders();
|
||||||
headers.add("Authorization","Bearer " + accessToken);
|
headers.add("Authorization","Bearer " + accessToken);
|
||||||
HttpEntity<String> request = new HttpEntity<>(headers);
|
HttpEntity<String> request = new HttpEntity<>(headers);
|
||||||
|
|
||||||
//logger.info(restTemplate.exchange(fooResourceUrl, HttpMethod.GET, request, Object.class));
|
//logger.info(restTemplate.exchange(fooResourceUrl, HttpMethod.GET, request, Object.class));
|
||||||
ResponseEntity<String> response = restTemplate.exchange(issuer +"userinfo", HttpMethod.GET, request, String.class);
|
ResponseEntity<String> response = restTemplate.exchange(issuer +"userinfo", HttpMethod.GET, request, String.class);
|
||||||
|
if(response.getStatusCode() == HttpStatus.OK) {
|
||||||
return Response.status(response.getStatusCode().value()).entity(response.getBody()).type(MediaType.APPLICATION_JSON).build();
|
JsonObject userInfo = new JsonParser().parse(response.getBody()).getAsJsonObject();
|
||||||
|
JsonArray roles = new JsonArray();
|
||||||
|
AuthoritiesMapper.map(userInfo.get("edu_person_entitlements").getAsJsonArray()).forEach(grantedAuthority -> {
|
||||||
|
roles.add(grantedAuthority.getAuthority());
|
||||||
|
});
|
||||||
|
userInfo.add("roles", roles);
|
||||||
|
return Response.status(response.getStatusCode().value()).entity(userInfo.toString()).type(MediaType.APPLICATION_JSON).build();
|
||||||
|
} else {
|
||||||
|
return Response.status(response.getStatusCode().value()).entity(response.getBody()).type(MediaType.APPLICATION_JSON).build();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -159,7 +169,7 @@ public class Test3Service {
|
||||||
userInfoJson.addProperty("email", userInfo.getEmail());
|
userInfoJson.addProperty("email", userInfo.getEmail());
|
||||||
JsonArray roles = new JsonArray();
|
JsonArray roles = new JsonArray();
|
||||||
authentication.getAuthorities().forEach(grantedAuthority -> {
|
authentication.getAuthorities().forEach(grantedAuthority -> {
|
||||||
roles.add(grantedAuthority.toString());
|
roles.add(grantedAuthority.getAuthority());
|
||||||
});
|
});
|
||||||
userInfoJson.add("roles", roles);
|
userInfoJson.add("roles", roles);
|
||||||
}catch (Exception e){
|
}catch (Exception e){
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package eu.dnetlib.openaire.usermanagement.utils;
|
package eu.dnetlib.openaire.usermanagement.utils;
|
||||||
|
|
||||||
|
import com.google.gson.JsonArray;
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
import eu.dnetlib.openaire.user.pojos.ManagerVerification;
|
import eu.dnetlib.openaire.user.pojos.ManagerVerification;
|
||||||
import eu.dnetlib.openaire.user.utils.ManagerVerificationActions;
|
import eu.dnetlib.openaire.user.utils.ManagerVerificationActions;
|
||||||
|
@ -9,8 +10,7 @@ import org.springframework.security.crypto.password.PasswordEncoder;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import java.sql.Timestamp;
|
import java.sql.Timestamp;
|
||||||
import java.util.Date;
|
import java.util.*;
|
||||||
import java.util.Random;
|
|
||||||
|
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
|
@ -33,10 +33,33 @@ public class VerificationUtils {
|
||||||
return invitation;
|
return invitation;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void deleteRelatedVerifications(ManagerVerification managerVerification) {
|
||||||
|
List<ManagerVerification> related = actions.
|
||||||
|
getUserVerificationsForAnEntity(managerVerification.getEmail(), managerVerification.getType(), managerVerification.getEntity());
|
||||||
|
for(ManagerVerification verification : related) {
|
||||||
|
deleteVerification(verification.getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void deleteUserVerifications(String email, String type, String entity) {
|
||||||
|
List<ManagerVerification> managerVerifications = actions.
|
||||||
|
getUserVerificationsForAnEntity(email, type, entity);
|
||||||
|
for(ManagerVerification verification : managerVerifications) {
|
||||||
|
deleteVerification(verification.getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void deleteVerification(String id) {
|
public void deleteVerification(String id) {
|
||||||
actions.deleteVerificationEntry(id);
|
actions.deleteVerificationEntry(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public JsonArray getInvitedUsers(String type, String id) {
|
||||||
|
List<String> emails = actions.getVerificationsForAnEntity(type, id);
|
||||||
|
JsonArray users = new JsonArray();
|
||||||
|
emails.forEach(users::add);
|
||||||
|
return users;
|
||||||
|
}
|
||||||
|
|
||||||
public ManagerVerification getVerification(String id) {
|
public ManagerVerification getVerification(String id) {
|
||||||
return actions.getManagerVerification(id);
|
return actions.getManagerVerification(id);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue