78 lines
2.3 KiB
Java
78 lines
2.3 KiB
Java
package com.covas.Resources;
|
|
|
|
import java.util.Arrays;
|
|
import java.util.UUID;
|
|
|
|
import javax.inject.Inject;
|
|
import javax.ws.rs.Consumes;
|
|
import javax.ws.rs.GET;
|
|
import javax.ws.rs.Path;
|
|
import javax.ws.rs.PathParam;
|
|
import javax.ws.rs.QueryParam;
|
|
import javax.ws.rs.core.MediaType;
|
|
import javax.ws.rs.core.Response;
|
|
|
|
import com.covas.Entity.UsersEntity;
|
|
|
|
import io.quarkus.mailer.MailTemplate;
|
|
import io.quarkus.qute.Location;
|
|
import io.quarkus.redis.client.RedisClient;
|
|
|
|
@Path("mail")
|
|
public class MailRessource {
|
|
|
|
@Inject
|
|
@Location("mailer")
|
|
private MailTemplate mailer;
|
|
|
|
@Inject
|
|
RedisClient redisClient;
|
|
|
|
@GET
|
|
public Response sendMail(UsersEntity usersEntity){
|
|
UsersEntity users = UsersEntity.findByPseudo(usersEntity.pseudo);
|
|
if(users == null){
|
|
return Response.status(Response.Status.NOT_FOUND).build();
|
|
}
|
|
String randomKey=UUID.randomUUID().toString();
|
|
redisClient.set(Arrays.asList(users.id.toString(),randomKey));
|
|
redisClient.expire(users.id.toString(), "300");
|
|
mailer.to(users.email).subject(String.format("Compte %s créée", users.email)).data("name", users.pseudo).data("id",users.id).data("key",randomKey).send().subscribeAsCompletionStage();
|
|
return Response.ok().build();
|
|
}
|
|
|
|
@GET
|
|
@Path("{id}")
|
|
@Consumes(MediaType.APPLICATION_JSON)
|
|
public Response activateUsers(@PathParam("id") String id, @QueryParam("key") String key){
|
|
UsersEntity users = UsersEntity.findById(UUID.fromString(id));
|
|
if(users == null){
|
|
return Response.status(Response.Status.NOT_FOUND).build();
|
|
}
|
|
|
|
io.vertx.redis.client.Response singleKey = redisClient.get(id);
|
|
if(singleKey == null){
|
|
return Response.status(Response.Status.FORBIDDEN).build();
|
|
}
|
|
|
|
String redisKey = singleKey.toString();
|
|
|
|
if(!redisKey.equals(key)){
|
|
return Response.status(Response.Status.NOT_ACCEPTABLE).build();
|
|
}
|
|
redisClient.del(Arrays.asList(id));
|
|
if(users.status == 1){
|
|
return Response.status(Response.Status.NOT_MODIFIED).build();
|
|
}
|
|
|
|
users.status = 1;
|
|
users.persist();
|
|
|
|
if(users.isPersistent()){
|
|
return Response.status(Response.Status.PARTIAL_CONTENT).build();
|
|
}
|
|
return Response.ok().build();
|
|
}
|
|
|
|
}
|