| 541 | == **ID-6** - Register |
| 542 | The `/register` endpoint provides user registration functionality, allowing new users to create accounts in the system. |
| 543 | It supports basic user registration with name, surname, email, and password validation. |
| 544 | |
| 545 | === Registration Flow |
| 546 | The registration process follows these steps: |
| 547 | 1. User accesses the registration page: `/register` |
| 548 | 2. User fills out the registration form with required information |
| 549 | 3. System validates the input and creates a new account |
| 550 | 4. User is redirected to login page upon successful registration |
| 551 | |
| 552 | === |
| 553 | {{{ |
| 554 | @Controller |
| 555 | @RequestMapping("/register") |
| 556 | public class RegisterController { |
| 557 | private final AccountService accountService; |
| 558 | |
| 559 | @GetMapping |
| 560 | public String registerPage(@RequestParam(required = false) String error, |
| 561 | Model model) { |
| 562 | if (error != null) { |
| 563 | model.addAttribute("errorMessage", error); |
| 564 | } |
| 565 | model.addAttribute("display", "register"); |
| 566 | return "master"; |
| 567 | } |
| 568 | |
| 569 | @PostMapping |
| 570 | private String registerUser(@RequestParam String name, |
| 571 | @RequestParam String surname, |
| 572 | @RequestParam String email, |
| 573 | @RequestParam String password, |
| 574 | @RequestParam String confirmPassword) { |
| 575 | try { |
| 576 | accountService.save(email, name, surname, password, confirmPassword); |
| 577 | } catch (Exception e) { |
| 578 | return String.format("redirect:/register?error=%s", e.getMessage()); |
| 579 | } |
| 580 | return "redirect:/login"; |
| 581 | } |
| 582 | } |
| 583 | }}} |
| 584 | === |
| 585 | |
| 586 | ==== Controller Details: |
| 587 | - **URL Mapping:** `/register` |
| 588 | - **Methods:** |
| 589 | - `GET`: Displays registration form |
| 590 | - `POST`: Processes registration request |
| 591 | - **Functionality:** |
| 592 | - Displays registration form with error handling |
| 593 | - Processes user registration with field validation |
| 594 | - Handles registration errors and displays appropriate messages |
| 595 | - Redirects to login page upon successful registration |
| 596 | - **View:** Uses the `master` template and dynamically embeds `register` view |
| 597 | |
| 598 | ==== Registration Fields: |
| 599 | - **Required Information:** |
| 600 | - Name |
| 601 | - Surname |
| 602 | - Email (used as username for login) |
| 603 | - Password |
| 604 | - Password Confirmation |
| 605 | |
| 606 | |
| 607 | === |
| 608 | ==== Result of `/register` page |
| 609 | [[Image(register.png, 100%)]] |
| 610 | === |