2019-07-12 15:58:17 +02:00
|
|
|
package eu.eudat.logic.services.operations.authentication;
|
|
|
|
|
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
|
import eu.eudat.data.entities.UserInfo;
|
|
|
|
import eu.eudat.data.entities.UserRole;
|
|
|
|
import eu.eudat.data.entities.UserToken;
|
|
|
|
import eu.eudat.logic.builders.model.models.PrincipalBuilder;
|
|
|
|
import eu.eudat.logic.services.ApiContext;
|
|
|
|
import eu.eudat.models.data.security.Principal;
|
|
|
|
import eu.eudat.types.Authorities;
|
|
|
|
import org.springframework.core.env.Environment;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
2020-04-03 17:40:03 +02:00
|
|
|
import java.time.Instant;
|
2019-07-12 15:58:17 +02:00
|
|
|
import java.util.Date;
|
|
|
|
import java.util.HashSet;
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
@Service("nonVerifiedUserAuthenticationService")
|
|
|
|
public class NonVerifiedUserEmailAuthenticationService extends AbstractAuthenticationService {
|
|
|
|
|
|
|
|
public NonVerifiedUserEmailAuthenticationService(ApiContext apiContext, Environment environment) {
|
|
|
|
super(apiContext, environment);
|
|
|
|
}
|
|
|
|
|
|
|
|
public Principal Touch(UserToken token) {
|
|
|
|
if (token == null || token.getExpiresAt().before(new Date())) return null;
|
|
|
|
|
|
|
|
UserInfo user = this.apiContext.getOperationsContext().getDatabaseRepository().getUserInfoDao().find(token.getUser().getId());
|
|
|
|
if (user == null) return null;
|
|
|
|
String avatarUrl;
|
|
|
|
try {
|
2022-01-18 16:58:47 +01:00
|
|
|
avatarUrl = user.getAdditionalinfo() != null ? apiContext.getObjectMapper().readTree(user.getAdditionalinfo()).get("avatarUrl").asText() : "";
|
2019-07-12 15:58:17 +02:00
|
|
|
} catch (Exception e) {
|
|
|
|
avatarUrl = "";
|
|
|
|
}
|
2020-04-03 17:40:03 +02:00
|
|
|
String zenodoToken;
|
|
|
|
try {
|
2022-01-18 16:58:47 +01:00
|
|
|
zenodoToken = user.getAdditionalinfo() != null ? apiContext.getObjectMapper().readTree(user.getAdditionalinfo()).get("zenodoToken").asText() : "";
|
2020-04-03 17:40:03 +02:00
|
|
|
} catch (Exception e) {
|
|
|
|
zenodoToken = "";
|
|
|
|
}
|
|
|
|
Instant zenodoDuration;
|
|
|
|
try {
|
2022-01-18 16:58:47 +01:00
|
|
|
zenodoDuration = user.getAdditionalinfo() != null ? Instant.ofEpochMilli(apiContext.getObjectMapper().readTree(user.getAdditionalinfo()).get("expirationDate").asLong()) : Instant.now();
|
2020-04-03 17:40:03 +02:00
|
|
|
} catch (Exception e) {
|
|
|
|
zenodoDuration = Instant.now();
|
|
|
|
}
|
2020-04-10 16:16:37 +02:00
|
|
|
String zenodoEmail;
|
|
|
|
try {
|
2022-01-18 16:58:47 +01:00
|
|
|
zenodoEmail = user.getAdditionalinfo() != null ? apiContext.getObjectMapper().readTree(user.getAdditionalinfo()).get("zenodoEmail").asText() : "";
|
2020-04-10 16:16:37 +02:00
|
|
|
} catch (Exception e) {
|
|
|
|
zenodoEmail = "";
|
|
|
|
}
|
|
|
|
String zenodoRefresh;
|
|
|
|
try {
|
2022-01-18 16:58:47 +01:00
|
|
|
zenodoRefresh = user.getAdditionalinfo() != null ? apiContext.getObjectMapper().readTree(user.getAdditionalinfo()).get("zenodoRefresh").asText() : "";
|
2020-04-10 16:16:37 +02:00
|
|
|
} catch (Exception e) {
|
|
|
|
zenodoRefresh = "";
|
|
|
|
}
|
2019-07-12 15:58:17 +02:00
|
|
|
String culture;
|
|
|
|
try {
|
2022-01-18 16:58:47 +01:00
|
|
|
culture = user.getAdditionalinfo() != null ? apiContext.getObjectMapper().readTree(user.getAdditionalinfo()).get("culture").get("name").asText() : "";
|
2019-07-12 15:58:17 +02:00
|
|
|
} catch (Exception e) {
|
|
|
|
culture = "";
|
|
|
|
}
|
|
|
|
String language;
|
|
|
|
try {
|
2022-01-18 16:58:47 +01:00
|
|
|
language = user.getAdditionalinfo() != null ? apiContext.getObjectMapper().readTree(user.getAdditionalinfo()).get("language").get("value").asText() : "";
|
2019-07-12 15:58:17 +02:00
|
|
|
} catch (Exception e) {
|
|
|
|
language = "";
|
|
|
|
}
|
|
|
|
String timezone;
|
|
|
|
try {
|
2022-01-18 16:58:47 +01:00
|
|
|
timezone = user.getAdditionalinfo() != null ? apiContext.getObjectMapper().readTree(user.getAdditionalinfo()).get("timezone").asText() : "";
|
2019-07-12 15:58:17 +02:00
|
|
|
} catch (Exception e) {
|
|
|
|
timezone = "";
|
|
|
|
}
|
|
|
|
Principal principal = this.apiContext.getOperationsContext().getBuilderFactory().getBuilder(PrincipalBuilder.class)
|
|
|
|
.id(user.getId()).token(token.getToken())
|
2020-07-17 12:15:44 +02:00
|
|
|
.expiresAt(token.getExpiresAt())
|
|
|
|
.name(user.getName())
|
|
|
|
.email(user.getEmail())
|
2019-07-12 15:58:17 +02:00
|
|
|
.avatarUrl(avatarUrl)
|
|
|
|
.culture(culture)
|
|
|
|
.language(language)
|
|
|
|
.timezone(timezone)
|
2020-04-03 17:40:03 +02:00
|
|
|
.zenodoToken(zenodoToken)
|
|
|
|
.zenodoDuration(zenodoDuration)
|
2020-04-10 16:16:37 +02:00
|
|
|
.zenodoEmail(zenodoEmail)
|
|
|
|
.zenodoRefresh(zenodoRefresh)
|
2019-07-12 15:58:17 +02:00
|
|
|
.build();
|
|
|
|
|
|
|
|
List<UserRole> userRoles = apiContext.getOperationsContext().getDatabaseRepository().getUserRoleDao().getUserRoles(user);
|
|
|
|
for (UserRole item : userRoles) {
|
|
|
|
if (principal.getAuthz() == null) principal.setAuthorities(new HashSet<>());
|
|
|
|
principal.getAuthz().add(Authorities.fromInteger(item.getRole()));
|
|
|
|
}
|
|
|
|
return principal;
|
|
|
|
}
|
|
|
|
}
|