Refactor to use SpringJPA
This commit is contained in:
@@ -2,8 +2,8 @@ package de.w665.biblenotes.service;
|
||||
|
||||
import de.w665.biblenotes.db.repo.UserLoginRepository;
|
||||
import de.w665.biblenotes.db.repo.UserRepository;
|
||||
import de.w665.biblenotes.model.User;
|
||||
import de.w665.biblenotes.model.UserLogin;
|
||||
import de.w665.biblenotes.db.entity.User;
|
||||
import de.w665.biblenotes.db.entity.UserLogin;
|
||||
import io.jsonwebtoken.Claims;
|
||||
import io.jsonwebtoken.Jwt;
|
||||
import io.jsonwebtoken.Jwts;
|
||||
@@ -15,6 +15,7 @@ import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.crypto.SecretKey;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Base64;
|
||||
import java.util.Date;
|
||||
import java.util.Optional;
|
||||
@@ -49,18 +50,24 @@ public class AuthenticationService {
|
||||
if(expirationTime.length > 0) {
|
||||
this.expirationTime = expirationTime[0];
|
||||
}
|
||||
Optional<User> optionalUser = userRepository.retrieveUserByUsername(username);
|
||||
log.debug("Authenticating user: {}", username);
|
||||
Optional<User> optionalUser = userRepository.findByUsername(username);
|
||||
if (optionalUser.isPresent() && passwordEncoder.matches(password, optionalUser.get().getPassword())) {
|
||||
User user = optionalUser.get();
|
||||
|
||||
userLoginRepository.insertUserLogin(new UserLogin(""/*Auto generated*/, user.getId(), new Date(), remoteAddr));
|
||||
userRepository.updateLastLoginForUser(user.getUsername(), new Date());
|
||||
UserLogin userLogin = new UserLogin();
|
||||
userLogin.setUserId(user.getId());
|
||||
userLogin.setLoginTime(LocalDateTime.now());
|
||||
userLogin.setLoginIp(remoteAddr);
|
||||
|
||||
userLoginRepository.save(userLogin);
|
||||
userRepository.updateLastLoginForUser(user.getUsername(), LocalDateTime.now());
|
||||
return generateToken(user);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private String generateToken(User username) {
|
||||
private String generateToken(User user) {
|
||||
long nowMillis = System.currentTimeMillis();
|
||||
Date now = new Date(nowMillis);
|
||||
Date expiryDate = new Date(nowMillis + expirationTime);
|
||||
@@ -68,8 +75,8 @@ public class AuthenticationService {
|
||||
return Jwts.builder()
|
||||
.subject("SharePulse Authentication Token")
|
||||
.issuedAt(now)
|
||||
.claim("role", username.getRole())
|
||||
.claim("username", username.getUsername())
|
||||
.claim("role", user.getRole())
|
||||
.claim("username", user.getUsername())
|
||||
.expiration(expiryDate)
|
||||
.signWith(secretKey)
|
||||
.compact();
|
||||
|
Reference in New Issue
Block a user