Password WIP

This commit is contained in:
2022-04-23 10:52:27 +02:00
parent 9e325414da
commit 0b4bb54ba6
7 changed files with 69 additions and 55 deletions

View File

@@ -5,17 +5,26 @@ import java.time.LocalDate;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import com.covas.Enums.Roles;
import javax.xml.bind.DatatypeConverter;
import org.hibernate.annotations.ColumnDefault;
import org.wildfly.security.password.interfaces.SimpleDigestPassword;
import io.quarkus.elytron.security.common.BcryptUtil;
import io.quarkus.hibernate.orm.panache.PanacheEntity;
import io.quarkus.security.jpa.UserDefinition;
import io.quarkus.security.jpa.Username;
import io.quarkus.security.jpa.Password;
import io.quarkus.security.jpa.PasswordProvider;
import io.quarkus.security.jpa.PasswordType;
import io.quarkus.security.jpa.Roles;
@Entity
@Table(name = "users")
@UserDefinition
public class UsersEntity extends PanacheEntity {
@Username
@Column(nullable = false, unique = true)
public String pseudo;
@Column(nullable = false, unique = true)
@@ -28,13 +37,36 @@ public class UsersEntity extends PanacheEntity {
public LocalDate birth;
@ColumnDefault("false")
public Boolean status;
@Password(value = PasswordType.CUSTOM, provider = CustomPasswordProvider.class)
@Column(nullable = false)
public String password;
public Roles roles;
@Roles
public String roles;
public static UsersEntity findByPseudo(String pseudo){
return find("pseudo", pseudo).firstResult();
}
public static void add(String pseudo, String email, String name, String firstName, LocalDate birth, String password, String roles){
UsersEntity users = new UsersEntity();
users.pseudo = pseudo;
users.email = email;
users.name = name;
users.firstName = firstName;
users.birth = birth;
users.status = false;
users.password = BcryptUtil.bcryptHash(password);
users.roles = roles;
users.persist();
}
}
public class CustomPasswordProvider implements PasswordProvider {
@Override
public org.wildfly.security.password.Password getPassword(String pass) {
byte[] digest = DatatypeConverter.parseHexBinary(pass);
return SimpleDigestPassword.createRaw(SimpleDigestPassword.ALGORITHM_SIMPLE_DIGEST_SHA_256, digest);
}
}