Added loginhistory view

- Added tooltip to keep logged in
- Added Administration button to credits UI
This commit is contained in:
2024-06-03 23:47:48 +02:00
parent c069028bd5
commit 1e464f6fb8
7 changed files with 77 additions and 8 deletions

View File

@ -12,6 +12,8 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import java.util.List;
@Slf4j
@Repository
public class UserLoginRepository {
@ -47,4 +49,19 @@ public class UserLoginRepository {
// Return the second most recent login if exists
return result.hasNext() ? result.next() : null;
}
public List<UserLogin> getUserLogins(String userId) {
Result<UserLogin> result = r.db(config.getDatabase()).table(TABLE_NAME)
.orderBy().optArg("index", r.desc("loginTime"))
.filter(r.hashMap("userId", userId))
.run(connection, UserLogin.class);
return result.toList();
}
public void deleteAllUserLogins(String userId) {
r.db(config.getDatabase()).table(TABLE_NAME)
.filter(r.hashMap("userId", userId))
.delete()
.run(connection);
}
}

View File

@ -75,6 +75,33 @@ public class Administration extends SecureApiRestController {
return ResponseEntity.ok(user);
}
@GetMapping("/loginhistory")
public ResponseEntity<Object> getLoginHistory(HttpServletRequest request) {
String token = request.getHeader("Authorization");
token = token.substring(7);
String username = authenticationService.getClaimValue(token, "username", String.class);
Optional<User> optionalUser = userRepository.retrieveUserByUsername(username);
if(optionalUser.isEmpty()) {
return ResponseEntity.badRequest().body("User not found");
}
String userId = optionalUser.get().getId();
return ResponseEntity.ok(userLoginRepository.getUserLogins(userId));
}
@DeleteMapping("/loginhistory")
public ResponseEntity<Object> deleteLoginHistory(HttpServletRequest request) {
String token = request.getHeader("Authorization");
token = token.substring(7);
String username = authenticationService.getClaimValue(token, "username", String.class);
Optional<User> optionalUser = userRepository.retrieveUserByUsername(username);
if(optionalUser.isEmpty()) {
return ResponseEntity.badRequest().body("User not found");
}
String userId = optionalUser.get().getId();
userLoginRepository.deleteAllUserLogins(userId);
return ResponseEntity.ok("User logins deleted successfully!");
}
@DeleteMapping("/files")
public ResponseEntity<Object> deleteFiles(HttpServletRequest request) {
List<FileUpload> files = fileCleanupService.deleteFiles();