diff --git a/Sources/src/main/kotlin/allin/model/User.kt b/Sources/src/main/kotlin/allin/model/User.kt index 62504f3..503ebda 100644 --- a/Sources/src/main/kotlin/allin/model/User.kt +++ b/Sources/src/main/kotlin/allin/model/User.kt @@ -6,4 +6,9 @@ import kotlinx.serialization.Serializable data class User(val username: String, val email: String, val password: String, var nbCoins: Int = 1000) @Serializable -data class CheckUser(val login: String,val password: String) \ No newline at end of file +data class CheckUser(val login: String,val password: String) + +fun isEmailValid(email: String): Boolean { + val emailRegex = Regex("^[A-Za-z0-9+_.-]+@(.+)$") + return !emailRegex.matches(email) +} diff --git a/Sources/src/main/kotlin/allin/plugins/Routing.kt b/Sources/src/main/kotlin/allin/plugins/Routing.kt deleted file mode 100644 index 73bdd9e..0000000 --- a/Sources/src/main/kotlin/allin/plugins/Routing.kt +++ /dev/null @@ -1,71 +0,0 @@ -/*package allin.plugins - -import allin.model.User -import io.ktor.http.* -import io.ktor.server.application.* -import io.ktor.server.html.* -import io.ktor.server.request.* -import io.ktor.server.response.* -import io.ktor.server.routing.* -import kotlinx.html.body -import kotlinx.html.h1 - -val users = mutableListOf() -fun Application.configureRouting() { - routing { - get("/") { - call.respondHtml(HttpStatusCode.OK) { - body { - h1 { - +"Bienvenue dans l'API de l'application ALLin!" - } - } - } - } - - route("/users") { - get { - call.respondText(users.joinToString("\n"), ContentType.Text.Plain) - } - post { - val newUser = call.receive() - users.add(newUser) - call.respond(HttpStatusCode.Created, newUser) - } - } - - route("/users/{username}") { - get { - val username = call.parameters["username"] - val user = users.find { it.username == username } - if (user != null) { - call.respond(user) - } else { - call.respond(HttpStatusCode.NotFound) - } - } - put { - val username = call.parameters["username"] - val userIndex = users.indexOfFirst { it.username == username } - if (userIndex != -1) { - val updatedUser = call.receive() - users[userIndex] = updatedUser - call.respond(updatedUser) - } else { - call.respond(HttpStatusCode.NotFound) - } - } - delete { - val username = call.parameters["username"] - val user = users.find { it.username == username } - if (user != null) { - users.remove(user) - call.respond(HttpStatusCode.NoContent) - } else { - call.respond(HttpStatusCode.NotFound) - } - } - } - } -} -*/ \ No newline at end of file diff --git a/Sources/src/main/kotlin/allin/routing/UserRouter.kt b/Sources/src/main/kotlin/allin/routing/UserRouter.kt index a51e3c2..3cbf1a8 100644 --- a/Sources/src/main/kotlin/allin/routing/UserRouter.kt +++ b/Sources/src/main/kotlin/allin/routing/UserRouter.kt @@ -2,6 +2,8 @@ package allin.routing import allin.model.CheckUser import allin.model.User +import allin.model.isEmailValid +import io.ktor.client.utils.* import io.ktor.http.* import io.ktor.server.application.* import io.ktor.server.request.* @@ -11,22 +13,20 @@ import io.ktor.server.routing.* val users = mutableListOf() fun Application.UserRouter() { - routing { - route("/users") { - get { - call.respond(users) - } - } + routing { route("/users/register"){ post { val TempUser = call.receive() + if (isEmailValid(TempUser.email)){ + call.respond(HttpStatusCode.Forbidden,"Input a valid mail !") + } val user = users.find { it.username == TempUser.username || it.email == TempUser.email } if(user == null) { users.add(TempUser) call.respond(HttpStatusCode.Created, TempUser) } - call.respond(HttpStatusCode.Conflict) + call.respond(HttpStatusCode.Conflict,"Mail or/and username already exist") } } @@ -37,41 +37,20 @@ fun Application.UserRouter() { if (user != null && user.password == checkUser.password) { call.respond(HttpStatusCode.OK, user) } else { - call.respond(HttpStatusCode.NotFound) + call.respond(HttpStatusCode.NotFound,"Login and/or password incorrect.") } } } - - route("/users/{username}") { - get { - val username = call.parameters["username"] - val user = users.find { it.username == username } - if (user != null) { - call.respond(user) - } else { - call.respond(HttpStatusCode.NotFound) - } - } - put { - val username = call.parameters["username"] - val userIndex = users.indexOfFirst { it.username == username } - if (userIndex != -1) { - val updatedUser = call.receive() - users[userIndex] = updatedUser - call.respond(updatedUser) - } else { - call.respond(HttpStatusCode.NotFound) - } - } - delete { - val username = call.parameters["username"] - val user = users.find { it.username == username } - if (user != null) { + route("/users/delete") { + post { + val checkUser = call.receive() + val user = users.find { it.username == checkUser.login || it.email == checkUser.login } + if (user != null && user.password == checkUser.password) { users.remove(user) - call.respond(HttpStatusCode.NoContent) + call.respond(HttpStatusCode.Accepted, user) } else { - call.respond(HttpStatusCode.NotFound) + call.respond(HttpStatusCode.NotFound,"Login and/or password incorrect.") } } }