88 lines
2.9 KiB
Java
88 lines
2.9 KiB
Java
package restImplementation;
|
|
|
|
import blockchain.query.TransactionWrapper;
|
|
import database.user.User;
|
|
import database.user.UserDao;
|
|
import org.springframework.security.crypto.bcrypt.BCrypt;
|
|
|
|
import java.time.Instant;
|
|
import java.util.HashMap;
|
|
import java.util.Map;
|
|
|
|
public class UserImplementation {
|
|
|
|
public Map<String,String> registerUser(User user) throws Exception {
|
|
TransactionWrapper transactionWrapper = new TransactionWrapper();
|
|
UserDao userDao = new UserDao();
|
|
|
|
//CREATE USER HASH. TEMPORARY USER HASH IS : name+email+firstname+association
|
|
user.setUser_hash(hashPassword(user.getName()+user.getEmail()+user.getFirstname()+user.getAssociation()));
|
|
|
|
//REGISTER IN BLOCKCHAIN
|
|
String[] userInfos = new String[]{user.getUser_hash(),user.getName(),user.getFirstname(),""+user.getPhone(),user.getAssociation()};
|
|
transactionWrapper.sendTransaction("registerUser",userInfos);
|
|
|
|
//REGISTER IN REPLICA DB FOR BI
|
|
Map<String,String> response = new HashMap<>();
|
|
User dbUser = userDao.getUser(user.getEmail()); // check if user exist
|
|
|
|
if(dbUser != null){
|
|
response.put("response","false");
|
|
return response;
|
|
}else {
|
|
user.setPassword(hashPassword(user.getPassword()));
|
|
long now = Instant.now().toEpochMilli();
|
|
user.setCreation_date(now);
|
|
user.setModification_date(now);
|
|
user.setVerified(true);
|
|
user.setApproved(false);
|
|
|
|
userDao.addUser(user);
|
|
response.put("userHash",user.getUser_hash());
|
|
response.put("response","true");
|
|
return response;
|
|
}
|
|
}
|
|
|
|
public User getUser(String email, String password) throws Exception{
|
|
UserDao userDao = new UserDao();
|
|
User user1 = userDao.getUser(email);
|
|
if(user1 != null){
|
|
String hash = user1.getPassword();
|
|
if(BCrypt.checkpw(password, hash)){
|
|
return user1;
|
|
}else{
|
|
return null;
|
|
}
|
|
}else {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public Map<String,String> userLogger(User user) throws Exception {
|
|
UserDao userDao = new UserDao();
|
|
Map<String,String> response = new HashMap<>();
|
|
|
|
User userResponse = userDao.getUser(user.getEmail());
|
|
if(userResponse != null){
|
|
String hash = userResponse.getPassword();
|
|
|
|
if(!BCrypt.checkpw(user.getPassword(), hash)){
|
|
response.put("response","Not Allowed");
|
|
}else{
|
|
response.put("response","Ok");
|
|
response.put("userHash",userResponse.getUser_hash());
|
|
}
|
|
} else {
|
|
response.put("response","Not Exist");
|
|
}
|
|
return response;
|
|
}
|
|
|
|
|
|
private String hashPassword(String plainTextPassword){
|
|
return BCrypt.hashpw(plainTextPassword,BCrypt.gensalt());
|
|
}
|
|
|
|
}
|