Skip to content
Snippets Groups Projects
Commit dbd5ca70 authored by Mads Lundegaard's avatar Mads Lundegaard
Browse files

Merge branch 'user_registration' into 'dev'

User registration

See merge request !58
parents 37ad034f 2dec3ea3
No related branches found
No related tags found
2 merge requests!104Weekly merge to Master,!58User registration
Pipeline #76555 passed
......@@ -38,7 +38,7 @@
<artifactId>hibernate-jpa-2.1-api</artifactId>
<version>1.0.2.Final</version>
</dependency>
<dependency>
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.1.0.Final</version>
......
......@@ -93,4 +93,32 @@ public class LoginRepository extends GenericRepository<Login, String>{
}
return false;
}
/**
* Method for setting the password on the user for the first time
*
* @param username of the user that will have the password set
* @param password password that will be set
* @return
*/
public boolean setPassword(String username, String password) {
ArrayList<String> info = new ArrayList<>();
try {
Optional<Login> login = findById(username);
if(login.isPresent()) {
info = Authentication.setPassword(password);
String saltString = info.get(0);
String hastString = info.get(1);
login.get().setPasswordSalt(saltString);
login.get().setHash(hastString);
save(login.get());
return true;
}
}
catch (IllegalArgumentException e) {
e.printStackTrace();
}
return false;
}
}
\ No newline at end of file
......@@ -19,7 +19,7 @@ import java.util.stream.Collectors;
/**
* Image service
* @author Stian Mogen, Eirik Steira, Madslun
* @author Stian Mogen, Eirik Steira, madslun
* @version 1.0 22.03.2020
*/
......
package NTNU.IDATT1002.service;
import NTNU.IDATT1002.ApplicationState;
import NTNU.IDATT1002.models.Login;
import NTNU.IDATT1002.models.User;
import NTNU.IDATT1002.repository.LoginRepository;
import NTNU.IDATT1002.repository.UserRepository;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import java.util.Date;
import java.util.Optional;
/**
* User Service
* @author madslun
* @version 1.0 22.03.20
*/
public class UserService {
private LoginRepository loginRepository;
private UserRepository userRepository;
/**
* Inject entity manager instance to the repositories
*/
public UserService() {
EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("ImageApplication");
EntityManager entityManager = entityManagerFactory.createEntityManager();
this.loginRepository = new LoginRepository(entityManager);
this.userRepository = new UserRepository(entityManager);
}
/**
* Creates a new user and sets password on the new user
*
* @param email that will added to the user
* @param username that will be registered to the user
* @param firstName of the user
* @param lastName of the user
* @param callingCode of the phone number
* @param phoneNumber of the user
* @param birthDate of the user
* @param password that will be set to login
* @return Optional with the user
*/
public Optional<User> createUser(String email, String username, String firstName, String lastName, String callingCode, String phoneNumber, Date birthDate, String password) {
User user = new User(email, username, firstName, lastName, callingCode, phoneNumber, birthDate);
Login login = new Login(user, "", "");
userRepository.save(user);
loginRepository.save(login);
loginRepository.setPassword(username, password);
return userRepository.save(user);
}
/**
* Logs a user in if correct credentials is given
*
* @param username that will be checked against
* @param password that will be compared to database
* @return
*/
public boolean logIn(String username, String password) {
if(loginRepository.logIn(username, password)) {
User user = loginRepository.findById(username).get().getUser();
ApplicationState.setCurrentUser(user);
return true;
}
return false;
}
/**
* Searches for a user by username, checks if the old password matches, sets new password if old is right
*
* @param username that will be searched for
* @param oldPassword that will be compared to database
* @param newPassword that will be set
* @return
*/
public boolean changePassword(String username, String oldPassword, String newPassword) {
return loginRepository.changePassword(username, oldPassword, newPassword);
}
}
......@@ -19,7 +19,7 @@
<properties>
<!-- Configuring JDBC properties -->
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
<property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://mysql.stud.iie.ntnu.no:3306/g_sysutv_14" />
<property name="javax.persistence.jdbc.user" value="g_sysutv_14" />
<property name="javax.persistence.jdbc.password" value="tNdTRrwM" />
......
package NTNU.IDATT1002.service;
import NTNU.IDATT1002.models.User;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import javax.validation.constraints.AssertTrue;
import java.lang.management.OperatingSystemMXBean;
import java.util.Date;
import java.util.Optional;
import static org.junit.jupiter.api.Assertions.*;
class UserServiceTest {
private UserService userService;
private String email;
private String username;
private String firstName;
private String lastName;
private String phoneNumber;
private String callingCode;
private String password;
private Date date;
@BeforeEach
void setUp() {
userService = new UserService();
email = "email";
username = "test";
firstName = "test";
lastName = "testesen";
phoneNumber = "12345678";
callingCode = "+47";
password = "Test123";
date = new Date(System.currentTimeMillis());
}
@Test
void testCreateuser() {
Optional<User> user = userService.createUser(email, username, firstName, lastName, callingCode, phoneNumber, date, password);
assertTrue(user.isPresent());
assertEquals(username, user.get().getUsername());
}
@Test
void testChangePassword() {
String newPassword = "Test321";
Optional<User> user = userService.createUser(email, username, firstName, lastName, callingCode, phoneNumber, date, password);
assertTrue(user.isPresent());
assertTrue(userService.changePassword(username, password, newPassword));
}
@Test
void testLogIn() {
Optional<User> user = userService.createUser(email, username, firstName, lastName, callingCode, phoneNumber, date, password);
assertTrue(user.isPresent());
assertTrue(userService.logIn(username, password));
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment