197 lines
9.0 KiB
Java
197 lines
9.0 KiB
Java
package com.example.starter;
|
|
|
|
import at.favre.lib.crypto.bcrypt.BCrypt;
|
|
import io.vertx.core.json.JsonObject;
|
|
import io.vertx.ext.web.RoutingContext;
|
|
import io.vertx.sqlclient.Tuple;
|
|
|
|
public class SetUser {
|
|
private DatabaseService databaseService;
|
|
|
|
public SetUser(DatabaseService ddbs) {
|
|
this.databaseService = ddbs;
|
|
}
|
|
|
|
public void updateUserPoints(Integer userId, Integer points) {
|
|
databaseService.pool
|
|
.preparedQuery("UPDATE users SET points=points+? WHERE id=?")
|
|
.execute(Tuple.of(points, userId))
|
|
.onFailure(e -> {
|
|
System.err.println("Erreur de mise à jour des points :" + e.getMessage());
|
|
})
|
|
.onSuccess(rows -> {
|
|
if (rows.rowCount() > 0) {
|
|
System.out.println("Points de l'utilisateur mis à jour avec succès");
|
|
} else {
|
|
System.out.println("Utilisateur non trouvé pour la mise à jour des points");
|
|
}
|
|
});
|
|
}
|
|
|
|
public void changeUserPassword(RoutingContext context) {
|
|
JsonObject body = context.body().asJsonObject();
|
|
if (body == null) {
|
|
context.response()
|
|
.setStatusCode(400)
|
|
.end(new JsonObject().put("error", "Corps de la requête manquant").encode());
|
|
return;
|
|
}
|
|
Integer id = body.getInteger("id");
|
|
String oldPassword = body.getString("oldPassword");
|
|
String newPassword = body.getString("newPassword");
|
|
|
|
databaseService.pool
|
|
.preparedQuery("SELECT password FROM users WHERE id=?")
|
|
.execute(Tuple.of(id))
|
|
.onFailure(e -> {
|
|
System.err.println("Erreur de récupération de la BDD :" + e.getMessage());
|
|
context.response()
|
|
.setStatusCode(500)
|
|
.end(new JsonObject().put("error", "Erreur de récupération de la BDD").encode());
|
|
})
|
|
.onSuccess(rows -> {
|
|
if (rows.rowCount() == 0) {
|
|
context.response()
|
|
.setStatusCode(404)
|
|
.end(new JsonObject().put("error", "Utilisateur non trouvé").encode());
|
|
return;
|
|
}
|
|
|
|
String currentPassword = rows.iterator().next().getString("password");
|
|
BCrypt.Result verification = BCrypt.verifyer().verify(oldPassword.toCharArray(), currentPassword);
|
|
|
|
if (!verification.verified) {
|
|
context.response()
|
|
.setStatusCode(401)
|
|
.end(new JsonObject().put("error", "Ancien mot de passe incorrect").encode());
|
|
return;
|
|
}
|
|
String hashedPassword = BCrypt.withDefaults().hashToString(12, newPassword.toCharArray());
|
|
|
|
databaseService.pool
|
|
.preparedQuery("UPDATE users SET password=? WHERE id=?")
|
|
.execute(Tuple.of(hashedPassword, id))
|
|
.onFailure(e -> {
|
|
System.err.println("Erreur lors de la mise à jour du mot de passe :" + e.getMessage());
|
|
context.response()
|
|
.setStatusCode(500)
|
|
.end(new JsonObject()
|
|
.put("error", "Erreur lors de la mise à jour du mot de passe")
|
|
.encode());
|
|
})
|
|
.onSuccess(updateRows -> {
|
|
context.response()
|
|
.putHeader("content-type", "application/json: charset=UTF-8")
|
|
.end(new JsonObject().put("success", "Le mot de passe a bien été mis à jour")
|
|
.encode());
|
|
});
|
|
});
|
|
}
|
|
|
|
public void updateUserProfile(RoutingContext context) {
|
|
JsonObject body = context.body().asJsonObject();
|
|
if (body == null) {
|
|
context.response()
|
|
.setStatusCode(400)
|
|
.end(new JsonObject().put("error", "Corps de la requête manquant").encode());
|
|
return;
|
|
}
|
|
Integer id = body.getInteger("id");
|
|
String name = body.getString("name");
|
|
String surname = body.getString("surname");
|
|
String pseudo = body.getString("pseudo");
|
|
|
|
databaseService.pool
|
|
.preparedQuery("UPDATE users SET name=?, surname=?, pseudo=? WHERE id=?")
|
|
.execute(Tuple.of(name, surname,pseudo, id))
|
|
.onFailure(e -> {
|
|
System.err.println("Erreur de récupération de la BDD :" + e.getMessage());
|
|
context.response()
|
|
.setStatusCode(500)
|
|
.end(new JsonObject().put("error", "Erreur de récupération de la BDD").encode());
|
|
})
|
|
.onSuccess(rows -> {
|
|
if (rows.rowCount() == 0) {
|
|
context.response()
|
|
.setStatusCode(404)
|
|
.end(new JsonObject().put("error", "Utilisateur non trouvé").encode());
|
|
return;
|
|
}
|
|
context.response()
|
|
.putHeader("content-type", "application/json: charset=UTF-8")
|
|
.end(new JsonObject()
|
|
.put("success", "Les informations de l'utilisateur ont bien été mises à jour")
|
|
.encode());
|
|
return;
|
|
});
|
|
}
|
|
|
|
public void setUserPoints(RoutingContext context) {
|
|
JsonObject body = context.body().asJsonObject();
|
|
if (body == null) {
|
|
context.response()
|
|
.setStatusCode(400)
|
|
.end(new JsonObject().put("error", "Corps de la requête manquant").encode());
|
|
return;
|
|
}
|
|
Integer id = body.getInteger("id");
|
|
Integer points = body.getInteger("points");
|
|
databaseService.pool
|
|
.preparedQuery(
|
|
"UPDATE users SET points=? WHERE id=?")
|
|
.execute(Tuple.of(points, id))
|
|
.onFailure(e -> {
|
|
System.err.println("Erreur de récupération de la BDD :" + e.getMessage());
|
|
context.response()
|
|
.setStatusCode(500)
|
|
.end(new JsonObject().put("Erreur", "Erreur de récupération de la BDD").encode());
|
|
})
|
|
.onSuccess(rows -> {
|
|
if (rows.rowCount() == 0) {
|
|
context.response()
|
|
.setStatusCode(404)
|
|
.end(new JsonObject().put("error", "Utilisateur non trouvé").encode());
|
|
return;
|
|
}
|
|
context.response()
|
|
.putHeader("content-type", "application/json: charset=UTF-8")
|
|
.end(new JsonObject().put("success", "Les points de l'utilisateur ont bien été mis à jour")
|
|
.encode());
|
|
return;
|
|
});
|
|
}
|
|
|
|
public void deleteUser(RoutingContext context) {
|
|
JsonObject body = context.body().asJsonObject();
|
|
if (body == null) {
|
|
context.response()
|
|
.setStatusCode(400)
|
|
.end(new JsonObject().put("error", "Corps de la requête manquant").encode());
|
|
return;
|
|
}
|
|
Integer id = body.getInteger("id");
|
|
databaseService.pool
|
|
.preparedQuery("DELETE FROM users WHERE id=?")
|
|
.execute(Tuple.of(id))
|
|
.onFailure(e -> {
|
|
System.err.println("Erreur de récupération de la BDD :" + e.getMessage());
|
|
context.response()
|
|
.setStatusCode(500)
|
|
.end(new JsonObject().put("error", "Erreur de récupération de la BDD").encode());
|
|
})
|
|
.onSuccess(rows -> {
|
|
if (rows.rowCount() == 0) {
|
|
context.response()
|
|
.setStatusCode(404)
|
|
.end(new JsonObject().put("error", "Utilisateur non trouvé").encode());
|
|
return;
|
|
}
|
|
context.response()
|
|
.putHeader("content-type", "application/json: charset=UTF-8")
|
|
.end(new JsonObject().put("success", "L'utilisateur à bien été supprimé").encode());
|
|
return;
|
|
});
|
|
|
|
}
|
|
}
|