Add user registration endpoint and HDFS directory creation
- Implemented a new registration endpoint in AuthController to handle user sign-ups. - Integrated AuthenticationService to save the user and create a corresponding HDFS directory for the user upon registration. - Updated User entity to return the username instead of email in getUsername method.
This commit is contained in:
@@ -2,15 +2,17 @@ package com.skycrate.backend.skycrateBackend.controller;
|
|||||||
|
|
||||||
import com.skycrate.backend.skycrateBackend.dto.LoginRequest;
|
import com.skycrate.backend.skycrateBackend.dto.LoginRequest;
|
||||||
import com.skycrate.backend.skycrateBackend.dto.LoginResponse;
|
import com.skycrate.backend.skycrateBackend.dto.LoginResponse;
|
||||||
|
import com.skycrate.backend.skycrateBackend.dto.RegisterUserDto;
|
||||||
import com.skycrate.backend.skycrateBackend.dto.TokenRefreshRequest;
|
import com.skycrate.backend.skycrateBackend.dto.TokenRefreshRequest;
|
||||||
import com.skycrate.backend.skycrateBackend.dto.TokenRefreshResponse;
|
import com.skycrate.backend.skycrateBackend.dto.TokenRefreshResponse;
|
||||||
import com.skycrate.backend.skycrateBackend.entity.RefreshToken;
|
import com.skycrate.backend.skycrateBackend.entity.RefreshToken;
|
||||||
import com.skycrate.backend.skycrateBackend.entity.User;
|
import com.skycrate.backend.skycrateBackend.entity.User;
|
||||||
import com.skycrate.backend.skycrateBackend.repository.UserRepository;
|
import com.skycrate.backend.skycrateBackend.repository.UserRepository;
|
||||||
import com.skycrate.backend.skycrateBackend.security.TokenBlacklistService;
|
import com.skycrate.backend.skycrateBackend.security.TokenBlacklistService;
|
||||||
|
import com.skycrate.backend.skycrateBackend.services.AuthenticationService;
|
||||||
import com.skycrate.backend.skycrateBackend.services.JwtService;
|
import com.skycrate.backend.skycrateBackend.services.JwtService;
|
||||||
import com.skycrate.backend.skycrateBackend.services.RefreshTokenService;
|
|
||||||
import com.skycrate.backend.skycrateBackend.services.RateLimiterService;
|
import com.skycrate.backend.skycrateBackend.services.RateLimiterService;
|
||||||
|
import com.skycrate.backend.skycrateBackend.services.RefreshTokenService;
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.security.authentication.AuthenticationManager;
|
import org.springframework.security.authentication.AuthenticationManager;
|
||||||
@@ -27,6 +29,7 @@ public class AuthController {
|
|||||||
private final RefreshTokenService refreshTokenService;
|
private final RefreshTokenService refreshTokenService;
|
||||||
private final TokenBlacklistService tokenBlacklistService;
|
private final TokenBlacklistService tokenBlacklistService;
|
||||||
private final RateLimiterService rateLimiterService;
|
private final RateLimiterService rateLimiterService;
|
||||||
|
private final AuthenticationService authenticationService;
|
||||||
|
|
||||||
public AuthController(
|
public AuthController(
|
||||||
AuthenticationManager authManager,
|
AuthenticationManager authManager,
|
||||||
@@ -34,7 +37,8 @@ public class AuthController {
|
|||||||
UserRepository userRepository,
|
UserRepository userRepository,
|
||||||
RefreshTokenService refreshTokenService,
|
RefreshTokenService refreshTokenService,
|
||||||
TokenBlacklistService tokenBlacklistService,
|
TokenBlacklistService tokenBlacklistService,
|
||||||
RateLimiterService rateLimiterService
|
RateLimiterService rateLimiterService,
|
||||||
|
AuthenticationService authenticationService
|
||||||
) {
|
) {
|
||||||
this.authManager = authManager;
|
this.authManager = authManager;
|
||||||
this.jwtService = jwtService;
|
this.jwtService = jwtService;
|
||||||
@@ -42,6 +46,14 @@ public class AuthController {
|
|||||||
this.refreshTokenService = refreshTokenService;
|
this.refreshTokenService = refreshTokenService;
|
||||||
this.tokenBlacklistService = tokenBlacklistService;
|
this.tokenBlacklistService = tokenBlacklistService;
|
||||||
this.rateLimiterService = rateLimiterService;
|
this.rateLimiterService = rateLimiterService;
|
||||||
|
this.authenticationService = authenticationService;
|
||||||
|
}
|
||||||
|
|
||||||
|
// New Register Endpoint
|
||||||
|
@PostMapping("/register")
|
||||||
|
public ResponseEntity<?> register(@RequestBody RegisterUserDto request) {
|
||||||
|
User user = authenticationService.signUp(request);
|
||||||
|
return ResponseEntity.ok("User registered successfully with username: " + user.getUsername());
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/login")
|
@PostMapping("/login")
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ public class User implements UserDetails {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getUsername() {
|
public String getUsername() {
|
||||||
return email; // or return username if that's your login key
|
return username; // or return username if that's your login key
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
+17
-1
@@ -1,10 +1,13 @@
|
|||||||
package com.skycrate.backend.skycrateBackend.services;
|
package com.skycrate.backend.skycrateBackend.services;
|
||||||
|
|
||||||
|
import com.skycrate.backend.skycrateBackend.config.HDFSConfig;
|
||||||
import com.skycrate.backend.skycrateBackend.dto.LoginUserDto;
|
import com.skycrate.backend.skycrateBackend.dto.LoginUserDto;
|
||||||
import com.skycrate.backend.skycrateBackend.dto.RegisterUserDto;
|
import com.skycrate.backend.skycrateBackend.dto.RegisterUserDto;
|
||||||
import com.skycrate.backend.skycrateBackend.entity.User;
|
import com.skycrate.backend.skycrateBackend.entity.User;
|
||||||
import com.skycrate.backend.skycrateBackend.repository.UserRepository;
|
import com.skycrate.backend.skycrateBackend.repository.UserRepository;
|
||||||
import com.skycrate.backend.skycrateBackend.utils.RSAKeyUtil;
|
import com.skycrate.backend.skycrateBackend.utils.RSAKeyUtil;
|
||||||
|
import org.apache.hadoop.fs.FileSystem;
|
||||||
|
import org.apache.hadoop.fs.Path;
|
||||||
import org.springframework.security.authentication.AuthenticationManager;
|
import org.springframework.security.authentication.AuthenticationManager;
|
||||||
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
|
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
|
||||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||||
@@ -45,7 +48,20 @@ public class AuthenticationService {
|
|||||||
.privateKey(keyPair.getPrivate().getEncoded())
|
.privateKey(keyPair.getPrivate().getEncoded())
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
return userRepository.save(user);
|
User savedUser = userRepository.save(user);
|
||||||
|
|
||||||
|
// Create HDFS directory in root with username
|
||||||
|
try {
|
||||||
|
FileSystem fs = HDFSConfig.getHDFS();
|
||||||
|
String folderName = savedUser.getUsername();
|
||||||
|
Path userDir = new Path("/" + folderName);
|
||||||
|
if (!fs.exists(userDir)) {
|
||||||
|
fs.mkdirs(userDir);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new RuntimeException("Failed to create HDFS directory for user: " + savedUser.getUsername(), e);
|
||||||
|
}
|
||||||
|
return savedUser;
|
||||||
}
|
}
|
||||||
|
|
||||||
public User authenticate(LoginUserDto inputUser) {
|
public User authenticate(LoginUserDto inputUser) {
|
||||||
|
|||||||
Reference in New Issue
Block a user