Ajout du chiffrement des mots de passe
continuous-integration/drone/push Build is passing Details

pull/4/head
Lucas Evard 2 years ago
parent 3e0e3fa9cb
commit d7e26c8932

@ -22,6 +22,11 @@
<repositories> <repositories>
</repositories> </repositories>
<dependencies> <dependencies>
<dependency>
<groupId>org.mindrot</groupId>
<artifactId>jbcrypt</artifactId>
<version>0.4</version>
</dependency>
<dependency> <dependency>
<groupId>io.ktor</groupId> <groupId>io.ktor</groupId>
<artifactId>ktor-server-core-jvm</artifactId> <artifactId>ktor-server-core-jvm</artifactId>

@ -3,7 +3,7 @@ package allin.model
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
@Serializable @Serializable
data class User(val username: String, val email: String, val password: String, var nbCoins: Int = 1000, var token: String? = null) data class User(val username: String, val email: String, var password: String, var nbCoins: Int = 1000, var token: String? = null)
@Serializable @Serializable
data class CheckUser(val login: String,val password: String) data class CheckUser(val login: String,val password: String)

@ -3,6 +3,7 @@ package allin.routing
import allin.dto.* import allin.dto.*
import allin.model.CheckUser import allin.model.CheckUser
import allin.model.User import allin.model.User
import allin.utils.CryptManager
import com.typesafe.config.ConfigFactory import com.typesafe.config.ConfigFactory
import io.ktor.http.* import io.ktor.http.*
import io.ktor.server.application.* import io.ktor.server.application.*
@ -18,6 +19,7 @@ import allin.utils.TokenManager
val users = mutableListOf<User>() val users = mutableListOf<User>()
val tokenManager= TokenManager(HoconApplicationConfig(ConfigFactory.load())) val tokenManager= TokenManager(HoconApplicationConfig(ConfigFactory.load()))
val RegexChecker= RegexChecker() val RegexChecker= RegexChecker()
val CryptManager= CryptManager()
fun Application.UserRouter() { fun Application.UserRouter() {
routing { routing {
@ -29,8 +31,9 @@ fun Application.UserRouter() {
} }
val user = users.find { it.username == TempUser.username || it.email == TempUser.email } val user = users.find { it.username == TempUser.username || it.email == TempUser.email }
if(user == null) { if(user == null) {
CryptManager.passwordCrypt(TempUser)
users.add(TempUser) users.add(TempUser)
call.respond(HttpStatusCode.Created, convertUserToUserDTO(TempUser)) call.respond(HttpStatusCode.Created, TempUser)
} }
call.respond(HttpStatusCode.Conflict,"Mail or/and username already exist") call.respond(HttpStatusCode.Conflict,"Mail or/and username already exist")
} }
@ -40,7 +43,7 @@ fun Application.UserRouter() {
post { post {
val checkUser = call.receive<CheckUser>() val checkUser = call.receive<CheckUser>()
val user = users.find { it.username == checkUser.login || it.email == checkUser.login } val user = users.find { it.username == checkUser.login || it.email == checkUser.login }
if (user != null && user.password == checkUser.password) { if (user != null && CryptManager.passwordDecrypt(user,checkUser.password)) {
user.token=tokenManager.generateOrReplaceJWTToken(user) user.token=tokenManager.generateOrReplaceJWTToken(user)
call.respond(HttpStatusCode.OK, convertUserToUserDTOToken(user)) call.respond(HttpStatusCode.OK, convertUserToUserDTOToken(user))
} else { } else {

@ -0,0 +1,15 @@
package allin.utils
import allin.model.User
import org.mindrot.jbcrypt.BCrypt
class CryptManager {
val salt=BCrypt.gensalt()
fun passwordCrypt(user: User){
user.password=BCrypt.hashpw(user.password,salt)
}
fun passwordDecrypt(user: User, password: String): Boolean{
return BCrypt.hashpw(password,salt)==user.password
}
}
Loading…
Cancel
Save