summaryrefslogtreecommitdiff
path: root/src/main/java/com/mavlushechka/studentdatabase/controller
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/mavlushechka/studentdatabase/controller')
-rwxr-xr-xsrc/main/java/com/mavlushechka/studentdatabase/controller/AdminPanelController.java226
-rwxr-xr-xsrc/main/java/com/mavlushechka/studentdatabase/controller/EducationalSystemController.java37
-rwxr-xr-xsrc/main/java/com/mavlushechka/studentdatabase/controller/FamilyController.java37
-rwxr-xr-xsrc/main/java/com/mavlushechka/studentdatabase/controller/GraduatedInstitutionController.java37
-rwxr-xr-xsrc/main/java/com/mavlushechka/studentdatabase/controller/HealthController.java37
-rwxr-xr-xsrc/main/java/com/mavlushechka/studentdatabase/controller/HomeController.java19
-rwxr-xr-xsrc/main/java/com/mavlushechka/studentdatabase/controller/JobController.java37
-rwxr-xr-xsrc/main/java/com/mavlushechka/studentdatabase/controller/MilitaryServiceController.java37
-rwxr-xr-xsrc/main/java/com/mavlushechka/studentdatabase/controller/PassportController.java37
-rwxr-xr-xsrc/main/java/com/mavlushechka/studentdatabase/controller/PasswordController.java41
-rwxr-xr-xsrc/main/java/com/mavlushechka/studentdatabase/controller/StudentController.java41
11 files changed, 586 insertions, 0 deletions
diff --git a/src/main/java/com/mavlushechka/studentdatabase/controller/AdminPanelController.java b/src/main/java/com/mavlushechka/studentdatabase/controller/AdminPanelController.java
new file mode 100755
index 0000000..82e6fa9
--- /dev/null
+++ b/src/main/java/com/mavlushechka/studentdatabase/controller/AdminPanelController.java
@@ -0,0 +1,226 @@
+package com.mavlushechka.studentdatabase.controller;
+
+import com.mavlushechka.studentdatabase.domain.*;
+import com.mavlushechka.studentdatabase.repository.*;
+import com.mavlushechka.studentdatabase.service.CustomUserDetailsService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.*;
+
+@Controller
+public class AdminPanelController {
+ @Autowired
+ private CustomUserDetailsService userDetailsService;
+ @Autowired
+ private UserRepository userRepository;
+ @Autowired
+ private RoleRepository roleRepository;
+ @Autowired
+ private StudentRepository studentRepository;
+ @Autowired
+ private EducationalSystemRepository educationalSystemRepository;
+ @Autowired
+ private PassportRepository passportRepository;
+ @Autowired
+ private GraduatedInstitutionRepository graduatedInstitutionRepository;
+ @Autowired
+ private FamilyRepository familyRepository;
+ @Autowired
+ private HealthRepository healthRepository;
+ @Autowired
+ private JobRepository jobRepository;
+ @Autowired
+ private MilitaryServiceRepository militaryServiceRepository;
+
+ @GetMapping("/admin-panel/create-users")
+ public String createUsers(@RequestParam String group, @RequestParam int number, Map<String, Object> model) {
+ for (int i = 1; i <= number; i ++) {
+ Role userRole = roleRepository.findByRole("USER");
+ User user = new User(i + "student" + group, i + "student" + group, true, new HashSet<>(List.of(userRole)));
+ User userFromDb = userRepository.findByUsername(user.getUsername());
+
+ if (userFromDb != null) {
+ model.put("message", "User exists!");
+ return "/admin-panel/add-users";
+ }
+
+ userDetailsService.saveUser(user);
+ }
+ return "redirect:/admin-panel/all-users";
+ }
+
+ @GetMapping("/admin-panel/all-users")
+ public String getUsers(Map<String, Object> model) {
+ Iterable<User> users = userRepository.findAll();
+ model.put("users", users);
+ return "admin-panel/all-users";
+ }
+
+ @GetMapping("/admin-panel/information/all")
+ public String getAll(String id, String fullName, String group, Map<String, Object> model) {
+ Iterable<User> users = null;
+ Iterable<Student> students = null;
+ Iterable<Passport> passports = null;
+ Iterable<EducationalSystem> educationalSystems = null;
+ Iterable<GraduatedInstitution> graduatedInstitutions = null;
+ Iterable<Health> healths = null;
+ Iterable<Family> families = null;
+ Iterable<Job> jobs = null;
+ Iterable<MilitaryService> militaryServices = null;
+
+ List<User> userList = new ArrayList<>();
+ List<Student> studentList = new ArrayList<>();
+ List<Passport> passportList = new ArrayList<>();
+ List<EducationalSystem> educationalSystemList = new ArrayList<>();
+ List<GraduatedInstitution> graduatedInstitutionList = new ArrayList<>();
+ List<Health> healthList = new ArrayList<>();
+ List<Family> familyList = new ArrayList<>();
+ List<Job> jobList = new ArrayList<>();
+ List<MilitaryService> militaryServiceList = new ArrayList<>();
+
+ if (id != null) {
+ userList.add(userRepository.findById(id).orElse(new User()));
+ Student student = studentRepository.findById(id).orElse(new Student());
+ if (student.getPhoto() != null) {
+ student.setEncodedPhoto(Base64.getEncoder().encodeToString(student.getPhoto().getData()));
+ }
+ studentList.add(student);
+ passportList.add(passportRepository.findById(id).orElse(new Passport()));
+ educationalSystemList.add(educationalSystemRepository.findById(id).orElse(new EducationalSystem()));
+ graduatedInstitutionList.add(graduatedInstitutionRepository.findById(id).orElse(new GraduatedInstitution()));
+ healthList.add(healthRepository.findById(id).orElse(new Health()));
+ familyList.add(familyRepository.findById(id).orElse(new Family()));
+ jobList.add(jobRepository.findById(id).orElse(new Job()));
+ militaryServiceList.add(militaryServiceRepository.findById(id).orElse(new MilitaryService()));
+ } else if (fullName != null || group != null) {
+ ArrayList<String> ids = new ArrayList<>();
+ if (fullName != null) {
+ Iterable<Passport> passportIterable;
+ try {
+ passportIterable = passportRepository.findByFirstNameAndLastName(fullName.split(" ")[0], fullName.split(" ")[1]);
+ } catch (ArrayIndexOutOfBoundsException arrayIndexOutOfBoundsException) {
+ passportIterable = passportRepository.findByFirstName(fullName.split(" ")[0]);
+ }
+ for (Passport passport : passportIterable) {
+ ids.add(passport.getId());
+ }
+ } else {
+ Iterable<EducationalSystem> educationalSystemIterable;
+ educationalSystemIterable = educationalSystemRepository.findByGroup(group);
+ for (EducationalSystem educationalSystem : educationalSystemIterable) {
+ ids.add(educationalSystem.getId());
+ }
+ }
+
+ for (String eachId : ids) {
+ userList.add(userRepository.findById(eachId).orElse(new User()));
+ Student student = studentRepository.findById(eachId).orElse(new Student());
+ if (student.getPhoto() != null) {
+ student.setEncodedPhoto(Base64.getEncoder().encodeToString(student.getPhoto().getData()));
+ }
+ studentList.add(student);
+ passportList.add(passportRepository.findById(eachId).orElse(new Passport()));
+ educationalSystemList.add(educationalSystemRepository.findById(eachId).orElse(new EducationalSystem()));
+ graduatedInstitutionList.add(graduatedInstitutionRepository.findById(eachId).orElse(new GraduatedInstitution()));
+ healthList.add(healthRepository.findById(eachId).orElse(new Health()));
+ familyList.add(familyRepository.findById(eachId).orElse(new Family()));
+ jobList.add(jobRepository.findById(eachId).orElse(new Job()));
+ militaryServiceList.add(militaryServiceRepository.findById(eachId).orElse(new MilitaryService()));
+ }
+ } else {
+ users = userRepository.findAll();
+ students = studentRepository.findAll();
+ passports = passportRepository.findAll();
+ educationalSystems = educationalSystemRepository.findAll();
+ graduatedInstitutions = graduatedInstitutionRepository.findAll();
+ healths = healthRepository.findAll();
+ families = familyRepository.findAll();
+ jobs = jobRepository.findAll();
+ militaryServices = militaryServiceRepository.findAll();
+ }
+ if (id != null || fullName != null || group != null) {
+ users = userList;
+ students = studentList;
+ passports = passportList;
+ educationalSystems = educationalSystemList;
+ graduatedInstitutions = graduatedInstitutionList;
+ healths = healthList;
+ families = familyList;
+ jobs = jobList;
+ militaryServices = militaryServiceList;
+ }
+
+ model.put("users", users);
+ model.put("students", students);
+ model.put("passports", passports);
+ model.put("educationalSystems", educationalSystems);
+ model.put("graduatedInstitutions", graduatedInstitutions);
+ model.put("healths", healths);
+ model.put("families", families);
+ model.put("jobs", jobs);
+ model.put("militaryServices", militaryServices);
+ return "admin-panel/information/all";
+ }
+
+ @GetMapping("/admin-panel/information/students")
+ public String getStudents(Map<String, Object> model) {
+ Iterable<Student> students = studentRepository.findAll();
+ for (Student student : students) {
+ student.setEncodedPhoto(Base64.getEncoder().encodeToString(student.getPhoto().getData()));
+ }
+ model.put("students", students);
+ return "admin-panel/information/students";
+ }
+
+ @GetMapping("/admin-panel/information/educational-systems")
+ public String getEducationalSystems(Map<String, Object> model) {
+ Iterable<EducationalSystem> educationalSystems = educationalSystemRepository.findAll();
+ model.put("educationalSystems", educationalSystems);
+ return "admin-panel/information/educational-systems";
+ }
+
+ @GetMapping("/admin-panel/information/passports")
+ public String getPassports(Map<String, Object> model) {
+ Iterable<Passport> passports = passportRepository.findAll();
+ model.put("passports", passports);
+ return "admin-panel/information/passports";
+ }
+
+ @GetMapping("/admin-panel/information/graduated-institutions")
+ public String getGraduatedInstitutions(Map<String, Object> model) {
+ Iterable<GraduatedInstitution> graduatedInstitutions = graduatedInstitutionRepository.findAll();
+ model.put("graduatedInstitutions", graduatedInstitutions);
+ return "admin-panel/information/graduated-institutions";
+ }
+
+ @GetMapping("/admin-panel/information/families")
+ public String getFamilies(Map<String, Object> model) {
+ Iterable<Family> families = familyRepository.findAll();
+ model.put("families", families);
+ return "admin-panel/information/families";
+ }
+
+ @GetMapping("/admin-panel/information/health")
+ public String getHealth(Map<String, Object> model) {
+ Iterable<Health> health = healthRepository.findAll();
+ model.put("health", health);
+ return "admin-panel/information/health";
+ }
+
+ @GetMapping("/admin-panel/information/jobs")
+ public String getJobs(Map<String, Object> model) {
+ Iterable<Job> jobs = jobRepository.findAll();
+ model.put("jobs", jobs);
+ return "admin-panel/information/jobs";
+ }
+
+ @GetMapping("/admin-panel/information/military-services")
+ public String getMilitaryServices(Map<String, Object> model) {
+ Iterable<MilitaryService> militaryServices = militaryServiceRepository.findAll();
+ model.put("militaryServices", militaryServices);
+ return "admin-panel/information/military-services";
+ }
+}
diff --git a/src/main/java/com/mavlushechka/studentdatabase/controller/EducationalSystemController.java b/src/main/java/com/mavlushechka/studentdatabase/controller/EducationalSystemController.java
new file mode 100755
index 0000000..bbdb870
--- /dev/null
+++ b/src/main/java/com/mavlushechka/studentdatabase/controller/EducationalSystemController.java
@@ -0,0 +1,37 @@
+package com.mavlushechka.studentdatabase.controller;
+
+import com.mavlushechka.studentdatabase.domain.EducationalSystem;
+import com.mavlushechka.studentdatabase.domain.User;
+import com.mavlushechka.studentdatabase.repository.EducationalSystemRepository;
+import com.mavlushechka.studentdatabase.repository.UserRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.core.Authentication;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+
+import java.util.Map;
+import java.util.Optional;
+
+@Controller
+public class EducationalSystemController {
+ @Autowired
+ private UserRepository userRepository;
+ @Autowired
+ private EducationalSystemRepository educationalSystemRepository;
+
+ @GetMapping("/information/educational-system")
+ public String getUserIdAndEducationalSystem(Authentication authentication, Map<String, Object> model) {
+ User user = userRepository.findByUsername(authentication.getName());
+ EducationalSystem educationalSystem = educationalSystemRepository.findById(user.getId()).orElse(new EducationalSystem());
+ model.put("user", user);
+ model.put("educationalSystem", educationalSystem);
+ return "information/educational-system";
+ }
+
+ @PostMapping("/information/educational-system/save")
+ public String saveEducationalSystemRepository(EducationalSystem educationalSystem) {
+ educationalSystemRepository.save(educationalSystem);
+ return "redirect:/";
+ }
+}
diff --git a/src/main/java/com/mavlushechka/studentdatabase/controller/FamilyController.java b/src/main/java/com/mavlushechka/studentdatabase/controller/FamilyController.java
new file mode 100755
index 0000000..abbd36c
--- /dev/null
+++ b/src/main/java/com/mavlushechka/studentdatabase/controller/FamilyController.java
@@ -0,0 +1,37 @@
+package com.mavlushechka.studentdatabase.controller;
+
+import com.mavlushechka.studentdatabase.domain.Family;
+import com.mavlushechka.studentdatabase.domain.User;
+import com.mavlushechka.studentdatabase.repository.FamilyRepository;
+import com.mavlushechka.studentdatabase.repository.UserRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.core.Authentication;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+
+import java.util.Map;
+import java.util.Optional;
+
+@Controller
+public class FamilyController {
+ @Autowired
+ private UserRepository userRepository;
+ @Autowired
+ private FamilyRepository familyRepository;
+
+ @GetMapping("/information/family")
+ public String getUserAndFamily(Authentication authentication, Map<String, Object> model) {
+ User user = userRepository.findByUsername(authentication.getName());
+ Family family = familyRepository.findById(user.getId()).orElse(new Family());
+ model.put("user", user);
+ model.put("family", family);
+ return "information/family";
+ }
+
+ @PostMapping("/information/family/save")
+ public String saveFamily(Family family) {
+ familyRepository.save(family);
+ return "redirect:/";
+ }
+}
diff --git a/src/main/java/com/mavlushechka/studentdatabase/controller/GraduatedInstitutionController.java b/src/main/java/com/mavlushechka/studentdatabase/controller/GraduatedInstitutionController.java
new file mode 100755
index 0000000..c81a090
--- /dev/null
+++ b/src/main/java/com/mavlushechka/studentdatabase/controller/GraduatedInstitutionController.java
@@ -0,0 +1,37 @@
+package com.mavlushechka.studentdatabase.controller;
+
+import com.mavlushechka.studentdatabase.domain.GraduatedInstitution;
+import com.mavlushechka.studentdatabase.domain.User;
+import com.mavlushechka.studentdatabase.repository.GraduatedInstitutionRepository;
+import com.mavlushechka.studentdatabase.repository.UserRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.core.Authentication;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+
+import java.util.Map;
+import java.util.Optional;
+
+@Controller
+public class GraduatedInstitutionController {
+ @Autowired
+ private UserRepository userRepository;
+ @Autowired
+ private GraduatedInstitutionRepository graduatedInstitutionRepository;
+
+ @GetMapping("/information/graduated-institution")
+ public String getUserAndGraduatedInstitution(Authentication authentication, Map<String, Object> model) {
+ User user = userRepository.findByUsername(authentication.getName());
+ GraduatedInstitution graduatedInstitution = graduatedInstitutionRepository.findById(user.getId()).orElse(new GraduatedInstitution());
+ model.put("user", user);
+ model.put("graduatedInstitution", graduatedInstitution);
+ return "information/graduated-institution";
+ }
+
+ @PostMapping("/information/graduated-institution/save")
+ public String saveGraduatedInstitution(GraduatedInstitution graduatedInstitution) {
+ graduatedInstitutionRepository.save(graduatedInstitution);
+ return "redirect:/";
+ }
+}
diff --git a/src/main/java/com/mavlushechka/studentdatabase/controller/HealthController.java b/src/main/java/com/mavlushechka/studentdatabase/controller/HealthController.java
new file mode 100755
index 0000000..a09f133
--- /dev/null
+++ b/src/main/java/com/mavlushechka/studentdatabase/controller/HealthController.java
@@ -0,0 +1,37 @@
+package com.mavlushechka.studentdatabase.controller;
+
+import com.mavlushechka.studentdatabase.domain.Health;
+import com.mavlushechka.studentdatabase.domain.User;
+import com.mavlushechka.studentdatabase.repository.HealthRepository;
+import com.mavlushechka.studentdatabase.repository.UserRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.core.Authentication;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+
+import java.util.Map;
+import java.util.Optional;
+
+@Controller
+public class HealthController {
+ @Autowired
+ private UserRepository userRepository;
+ @Autowired
+ private HealthRepository healthRepository;
+
+ @GetMapping("/information/health")
+ public String getUserAndHealth(Authentication authentication, Map<String, Object> model) {
+ User user = userRepository.findByUsername(authentication.getName());
+ Health health = healthRepository.findById(user.getId()).orElse(new Health());
+ model.put("user", user);
+ model.put("health", health);
+ return "information/health";
+ }
+
+ @PostMapping("/information/health/save")
+ public String saveHealth(Health health) {
+ healthRepository.save(health);
+ return "redirect:/";
+ }
+}
diff --git a/src/main/java/com/mavlushechka/studentdatabase/controller/HomeController.java b/src/main/java/com/mavlushechka/studentdatabase/controller/HomeController.java
new file mode 100755
index 0000000..a21eea6
--- /dev/null
+++ b/src/main/java/com/mavlushechka/studentdatabase/controller/HomeController.java
@@ -0,0 +1,19 @@
+package com.mavlushechka.studentdatabase.controller;
+
+import org.springframework.security.core.Authentication;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+
+import java.util.Map;
+
+@Controller
+public class HomeController {
+ @GetMapping("/")
+ public String getLoginButtonText(Authentication authentication, Map<String, Object> model) {
+ boolean authorized = authentication != null;
+ String loginButtonText = (authorized) ? authentication.getName() : "Kirish";
+ model.put("authorized", authorized);
+ model.put("loginButtonText", loginButtonText);
+ return "index";
+ }
+}
diff --git a/src/main/java/com/mavlushechka/studentdatabase/controller/JobController.java b/src/main/java/com/mavlushechka/studentdatabase/controller/JobController.java
new file mode 100755
index 0000000..a0f879c
--- /dev/null
+++ b/src/main/java/com/mavlushechka/studentdatabase/controller/JobController.java
@@ -0,0 +1,37 @@
+package com.mavlushechka.studentdatabase.controller;
+
+import com.mavlushechka.studentdatabase.domain.Job;
+import com.mavlushechka.studentdatabase.domain.User;
+import com.mavlushechka.studentdatabase.repository.JobRepository;
+import com.mavlushechka.studentdatabase.repository.UserRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.core.Authentication;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+
+import java.util.Map;
+import java.util.Optional;
+
+@Controller
+public class JobController {
+ @Autowired
+ private UserRepository userRepository;
+ @Autowired
+ private JobRepository jobRepository;
+
+ @GetMapping("/information/job")
+ public String getUserAndJob(Authentication authentication, Map<String, Object> model) {
+ User user = userRepository.findByUsername(authentication.getName());
+ Job job = jobRepository.findById(user.getId()).orElse(new Job());
+ model.put("user", user);
+ model.put("job", job);
+ return "information/job";
+ }
+
+ @PostMapping("/information/job/save")
+ public String saveJob(Job job) {
+ jobRepository.save(job);
+ return "redirect:/";
+ }
+}
diff --git a/src/main/java/com/mavlushechka/studentdatabase/controller/MilitaryServiceController.java b/src/main/java/com/mavlushechka/studentdatabase/controller/MilitaryServiceController.java
new file mode 100755
index 0000000..dde5635
--- /dev/null
+++ b/src/main/java/com/mavlushechka/studentdatabase/controller/MilitaryServiceController.java
@@ -0,0 +1,37 @@
+package com.mavlushechka.studentdatabase.controller;
+
+import com.mavlushechka.studentdatabase.domain.MilitaryService;
+import com.mavlushechka.studentdatabase.domain.User;
+import com.mavlushechka.studentdatabase.repository.MilitaryServiceRepository;
+import com.mavlushechka.studentdatabase.repository.UserRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.core.Authentication;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+
+import java.util.Map;
+import java.util.Optional;
+
+@Controller
+public class MilitaryServiceController {
+ @Autowired
+ private UserRepository userRepository;
+ @Autowired
+ private MilitaryServiceRepository militaryServiceRepository;
+
+ @GetMapping("/information/military-service")
+ public String getUserIdAndMilitaryService(Authentication authentication, Map<String, Object> model) {
+ User user = userRepository.findByUsername(authentication.getName());
+ MilitaryService militaryService = militaryServiceRepository.findById(user.getId()).orElse(new MilitaryService());
+ model.put("user", user);
+ model.put("militaryService", militaryService);
+ return "information/military-service";
+ }
+
+ @PostMapping("/information/military-service/save")
+ public String saveMilitaryService(MilitaryService militaryService) {
+ militaryServiceRepository.save(militaryService);
+ return "redirect:/";
+ }
+}
diff --git a/src/main/java/com/mavlushechka/studentdatabase/controller/PassportController.java b/src/main/java/com/mavlushechka/studentdatabase/controller/PassportController.java
new file mode 100755
index 0000000..35a8d7f
--- /dev/null
+++ b/src/main/java/com/mavlushechka/studentdatabase/controller/PassportController.java
@@ -0,0 +1,37 @@
+package com.mavlushechka.studentdatabase.controller;
+
+import com.mavlushechka.studentdatabase.domain.Passport;
+import com.mavlushechka.studentdatabase.domain.User;
+import com.mavlushechka.studentdatabase.repository.PassportRepository;
+import com.mavlushechka.studentdatabase.repository.UserRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.core.Authentication;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+
+import java.util.Map;
+import java.util.Optional;
+
+@Controller
+public class PassportController {
+ @Autowired
+ private UserRepository userRepository;
+ @Autowired
+ private PassportRepository passportRepository;
+
+ @GetMapping("/information/passport")
+ public String getUserIdAndPassport(Authentication authentication, Map<String, Object> model) {
+ User user = userRepository.findByUsername(authentication.getName());
+ Passport passport = passportRepository.findById(user.getId()).orElse(new Passport());
+ model.put("user", user);
+ model.put("passport", passport);
+ return "information/passport";
+ }
+
+ @PostMapping("/information/passport/save")
+ public String savePassport(Passport passport) {
+ passportRepository.save(passport);
+ return "redirect:/";
+ }
+}
diff --git a/src/main/java/com/mavlushechka/studentdatabase/controller/PasswordController.java b/src/main/java/com/mavlushechka/studentdatabase/controller/PasswordController.java
new file mode 100755
index 0000000..d17d2f2
--- /dev/null
+++ b/src/main/java/com/mavlushechka/studentdatabase/controller/PasswordController.java
@@ -0,0 +1,41 @@
+package com.mavlushechka.studentdatabase.controller;
+
+import com.mavlushechka.studentdatabase.domain.User;
+import com.mavlushechka.studentdatabase.repository.UserRepository;
+import com.mavlushechka.studentdatabase.service.CustomUserDetailsService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PostMapping;
+
+import java.util.Map;
+import java.util.Objects;
+
+@Controller
+public class PasswordController {
+ @Autowired
+ private CustomUserDetailsService userDetailsService;
+ @Autowired
+ UserRepository userRepository;
+ @Autowired
+ private BCryptPasswordEncoder bCryptPasswordEncoder;
+
+ @PostMapping("/authentication/update-password")
+ public String updatePassword(Authentication authentication, String password, String newPassword, String newPassword2, Map<String, Object> model) {
+ User user = userRepository.findByUsername(authentication.getName());
+ boolean incorrectPassword = !bCryptPasswordEncoder.matches(password, user.getPassword());
+ boolean incorrectNewPassword = !Objects.equals(newPassword, newPassword2);
+
+ model.put("incorrectPassword", incorrectPassword);
+ model.put("incorrectNewPassword", incorrectNewPassword);
+
+ if (!incorrectPassword && !incorrectNewPassword) {
+ user.setPassword(newPassword);
+ userDetailsService.saveUser(user);
+ return "redirect:/";
+ } else {
+ return "/authentication/change-password";
+ }
+ }
+}
diff --git a/src/main/java/com/mavlushechka/studentdatabase/controller/StudentController.java b/src/main/java/com/mavlushechka/studentdatabase/controller/StudentController.java
new file mode 100755
index 0000000..76bc0f2
--- /dev/null
+++ b/src/main/java/com/mavlushechka/studentdatabase/controller/StudentController.java
@@ -0,0 +1,41 @@
+package com.mavlushechka.studentdatabase.controller;
+
+import com.mavlushechka.studentdatabase.domain.Student;
+import com.mavlushechka.studentdatabase.domain.User;
+import com.mavlushechka.studentdatabase.repository.StudentRepository;
+import com.mavlushechka.studentdatabase.repository.UserRepository;
+import org.bson.BsonBinarySubType;
+import org.bson.types.Binary;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.core.Authentication;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.util.Map;
+
+@Controller
+public class StudentController {
+ @Autowired
+ private UserRepository userRepository;
+ @Autowired
+ private StudentRepository studentRepository;
+
+ @GetMapping("/information/student")
+ public String getUserAndStudent(Authentication authentication, Map<String, Object> model) {
+ User user = userRepository.findByUsername(authentication.getName());
+ Student student = studentRepository.findById(user.getId()).orElse(new Student());
+ model.put("user", user);
+ model.put("student", student);
+ return "information/student";
+ }
+
+ @PostMapping("/information/student/save")
+ public String saveStudent(String id, String diploma, long telephoneNumber, String religion, String car, String house, MultipartFile photo) throws IOException {
+ Student student = new Student(id, diploma, telephoneNumber, religion, car, house, new Binary(BsonBinarySubType.BINARY, photo.getBytes()));
+ studentRepository.save(student);
+ return "redirect:/";
+ }
+} \ No newline at end of file