Add user and admin registration

Problem Context

We need separate registration endpoints for regular users and admin users with email and password validation.

Intermediate
100 points

File Changes (1)

src/main/java/com/example/controller/RegistrationController.java ADDED
@@ -0 +1 @@
1 +package com.example.controller;
2 +
3 +@RestController
4 +public class RegistrationController {
5 +
6 + @PostMapping("/register/user")
7 + public ResponseEntity<?> registerUser(@RequestBody UserRegistrationRequest request) {
8 + // Validate email
9 + String emailRegex = "^[A-Za-z0-9+_.-]+@[A-Za-z0-9.-]+$";
10 + if (!request.getEmail().matches(emailRegex)) {
11 + return ResponseEntity.badRequest().body("Invalid email format");
12 + }
13 +
14 + // Validate password
15 + if (request.getPassword().length() < 8) {
16 + return ResponseEntity.badRequest().body("Password must be at least 8 characters");
17 + }
18 + if (!request.getPassword().matches(".*[A-Z].*")) {
19 + return ResponseEntity.badRequest().body("Password must contain uppercase letter");
20 + }
21 + if (!request.getPassword().matches(".*[0-9].*")) {
22 + return ResponseEntity.badRequest().body("Password must contain a number");
23 + }
24 +
25 + // Create user...
26 + return ResponseEntity.ok(userService.createUser(request));
27 + }
28 +
29 + @PostMapping("/register/admin")
30 + public ResponseEntity<?> registerAdmin(@RequestBody AdminRegistrationRequest request) {
31 + // Validate email
32 + String emailRegex = "^[A-Za-z0-9+_.-]+@[A-Za-z0-9.-]+$";
33 + if (!request.getEmail().matches(emailRegex)) {
34 + return ResponseEntity.badRequest().body("Invalid email format");
35 + }
36 +
37 + // Validate password
38 + if (request.getPassword().length() < 8) {
39 + return ResponseEntity.badRequest().body("Password must be at least 8 characters");
40 + }
41 + if (!request.getPassword().matches(".*[A-Z].*")) {
42 + return ResponseEntity.badRequest().body("Password must contain uppercase letter");
43 + }
44 + if (!request.getPassword().matches(".*[0-9].*")) {
45 + return ResponseEntity.badRequest().body("Password must contain a number");
46 + }
47 +
48 + // Validate admin code
49 + if (!adminCodeService.isValid(request.getAdminCode())) {
50 + return ResponseEntity.badRequest().body("Invalid admin code");
51 + }
52 +
53 + return ResponseEntity.ok(userService.createAdmin(request));
54 + }
55 +}
Login Required: You must be registered to submit reviews and receive AI feedback. Register or login to start reviewing!

Your Review

Tip: Be thorough! Consider security, performance, code quality, and best practices.
Review Tips
  • Look for security vulnerabilities (SQL injection, XSS, etc.)
  • Check for null pointer exceptions and error handling
  • Consider performance implications
  • Evaluate code maintainability and readability
  • Check for proper resource management
  • Look for logic errors or edge cases
Analyzing Your Review
Our AI is carefully evaluating your code review against best practices