Commit a783d72b authored by Muhammad Suleman's avatar Muhammad Suleman

Added Registration Service

parent 314744c1
package com.school.project.controller.registration;
package com.school.project.controller.userRegistration;
import com.school.project.dto.registrationDTO.StudentRegistrationDTO;
import com.school.project.dto.registrationDTO.TeacherRegistrationDTO;
import com.school.project.dto.registrationDTO.UserDTO;
import com.school.project.model.registration.Teacher;
import com.school.project.dto.userRegistration.AdminRegistrationDTO;
import com.school.project.dto.userRegistration.StudentRegistrationDTO;
import com.school.project.dto.userRegistration.TeacherRegistrationDTO;
import com.school.project.dto.userRegistration.UserDTO;
import com.school.project.service.userRegistration.admin.AdminRegistrationService;
import com.school.project.service.userRegistration.student.StudentRegistrationService;
import com.school.project.service.userRegistration.teacher.TeacherRegistrationService;
import lombok.AllArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
......@@ -26,6 +28,9 @@ public class RegistrationController {
@Autowired
private TeacherRegistrationService teacherRegistrationService;
@Autowired
private AdminRegistrationService adminRegistrationService;
@PostMapping("/student")
public ResponseEntity<UserDTO> registerStudent(@RequestBody StudentRegistrationDTO student) {
try {
......@@ -45,4 +50,14 @@ public class RegistrationController {
throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "Data is not correct", e);
}
}
@PostMapping("/admin")
public ResponseEntity<UserDTO> registerAdmin(@RequestBody AdminRegistrationDTO admin) {
try {
UserDTO userDTO = adminRegistrationService.registerAdmin(admin);
return ResponseEntity.ok(userDTO);
} catch (Exception e) {
throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "Data is not correct", e);
}
}
}
package com.school.project.dto.modelDTO;
import com.school.project.model.registration.Student;
import com.school.project.model.registration.Teacher;
import com.school.project.model.userRegistration.Student;
import com.school.project.model.userRegistration.Teacher;
import lombok.Data;
import java.util.List;
......
package com.school.project.dto.userRegistration;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.RequiredArgsConstructor;
@Data
@AllArgsConstructor
@RequiredArgsConstructor
public class AdminRegistrationDTO {
private String email;
private String password;
private String name;
}
package com.school.project.dto.registrationDTO;
package com.school.project.dto.userRegistration;
import lombok.AllArgsConstructor;
import lombok.Builder;
......
package com.school.project.dto.registrationDTO;
package com.school.project.dto.userRegistration;
import lombok.AllArgsConstructor;
......
package com.school.project.dto.registrationDTO;
package com.school.project.dto.userRegistration;
import lombok.AllArgsConstructor;
import lombok.Data;
import java.util.List;
@Data
@AllArgsConstructor
public class UserDTO {
......
package com.school.project.model.school;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.school.project.model.registration.Student;
import com.school.project.model.registration.Teacher;
import com.school.project.model.userRegistration.Student;
import com.school.project.model.userRegistration.Teacher;
import lombok.AllArgsConstructor;
import lombok.Data;
......
package com.school.project.model.userRegistration;
import com.sun.istack.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.RequiredArgsConstructor;
import javax.persistence.*;
@Data
@Entity(name = "admin")
@NoArgsConstructor
public class Admin {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "admin_id")
private Long adminId;
@NotNull
@Column(name = "admin_name")
private String name;
@OneToOne
@MapsId
@JoinColumn(name = "admin_id")
private User adminAppUser;
}
package com.school.project.model.registration;
package com.school.project.model.userRegistration;
import com.sun.istack.NotNull;
import lombok.AllArgsConstructor;
......@@ -6,7 +6,6 @@ import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.RequiredArgsConstructor;
import javax.persistence.*;
@Data
......@@ -31,5 +30,5 @@ public class Role {
@NotNull
@Column(name = "role_type", unique = true)
private String role;
}
package com.school.project.model.registration;
package com.school.project.model.userRegistration;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.school.project.model.school.Course;
......@@ -21,7 +21,7 @@ public class Student {
private Long studentId;
@NotNull
@Column(name = "roll_no",unique = true)
@Column(name = "roll_no", unique = true)
private String rollNumber;
@NotNull
......
package com.school.project.model.registration;
package com.school.project.model.userRegistration;
import com.school.project.model.school.Course;
import com.school.project.model.school.Department;
......
package com.school.project.model.registration;
package com.school.project.model.userRegistration;
import com.sun.istack.NotNull;
......@@ -39,5 +39,8 @@ public class User {
@PrimaryKeyJoinColumn
private Teacher teacherUser;
@OneToOne(mappedBy = "adminAppUser", cascade = {CascadeType.MERGE})
@PrimaryKeyJoinColumn
private Admin adminUser;
}
package com.school.project.repository.userRegistration;
import com.school.project.model.userRegistration.Admin;
import lombok.RequiredArgsConstructor;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface AdminRegRepository extends JpaRepository<Admin,Long> {
}
package com.school.project.repository.registrationRepositery;
package com.school.project.repository.userRegistration;
import com.school.project.model.registration.Role;
import com.school.project.model.userRegistration.Role;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
......
package com.school.project.repository.registrationRepositery;
package com.school.project.repository.userRegistration;
import com.school.project.model.registration.Student;
import com.school.project.model.userRegistration.Student;
import org.springframework.data.jpa.repository.JpaRepository;
public interface StudentRegRepository extends JpaRepository<Student,Long> {
......
package com.school.project.repository.registrationRepositery;
package com.school.project.repository.userRegistration;
import com.school.project.model.registration.Teacher;
import com.school.project.model.userRegistration.Teacher;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
......
package com.school.project.repository.registrationRepositery;
package com.school.project.repository.userRegistration;
import com.school.project.model.registration.User;
import com.school.project.model.userRegistration.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
......
package com.school.project.security;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
......@@ -18,7 +17,6 @@ import org.springframework.security.oauth2.config.annotation.web.configurers.Aut
import org.springframework.security.oauth2.config.annotation.web.configurers.ResourceServerSecurityConfigurer;
import org.springframework.security.oauth2.provider.token.store.InMemoryTokenStore;
import static com.school.project.model.registration.Role.ROLES.STUDENT;
@Configuration
public class OAuth2ServerConfiguration {
......@@ -50,9 +48,8 @@ public class OAuth2ServerConfiguration {
.disable()
.and()
.authorizeRequests()
.antMatchers("/user/**").permitAll()
.antMatchers("/department/**").hasAuthority("STUDENT")
.antMatchers("/course/**", "/student/**", "/teacher/**").hasAuthority("TEACHER");
.antMatchers("/register/**").permitAll()
.antMatchers("/department/**","/course/**").hasAuthority("ADMIN");
}
}
......@@ -71,7 +68,6 @@ public class OAuth2ServerConfiguration {
endpoints
.authenticationManager(authenticationManager)
.tokenStore(tokenStore);
}
......
......@@ -8,7 +8,6 @@ import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.web.util.matcher.RequestMatcher;
......@@ -37,7 +36,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
.httpBasic()
.and()
.csrf().disable().cors().disable();
}
private static class BasicRequestMatcher implements RequestMatcher {
......
package com.school.project.service.userRegistration;
import com.school.project.model.registration.Role;
import com.school.project.model.registration.User;
import com.school.project.repository.registrationRepositery.UserRepository;
import com.school.project.model.userRegistration.Role;
import com.school.project.model.userRegistration.User;
import com.school.project.repository.userRegistration.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
......
package com.school.project.service.userRegistration.admin;
import com.school.project.dto.userRegistration.AdminRegistrationDTO;
import com.school.project.dto.userRegistration.UserDTO;
import org.springframework.stereotype.Service;
@Service
public interface AdminRegistrationService {
public UserDTO registerAdmin(AdminRegistrationDTO admin);
}
package com.school.project.service.userRegistration.admin;
import com.school.project.dto.userRegistration.AdminRegistrationDTO;
import com.school.project.dto.userRegistration.UserDTO;
import com.school.project.model.userRegistration.Admin;
import com.school.project.model.userRegistration.Role;
import com.school.project.model.userRegistration.User;
import com.school.project.repository.userRegistration.AdminRegRepository;
import com.school.project.repository.userRegistration.RoleRepository;
import com.school.project.repository.userRegistration.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
@Service
public class AdminRegistrationServiceImpl implements AdminRegistrationService {
@Autowired
private AdminRegRepository adminRegRepository;
@Autowired
private UserRepository userRepository;
@Autowired
private RoleRepository roleRepository;
@Autowired
private PasswordEncoder passwordEncoder;
public UserDTO registerAdmin(AdminRegistrationDTO admin) {
User newUser = new User();
newUser.setEmail(admin.getEmail());
newUser.setPassword(passwordEncoder.encode(admin.getPassword()));
newUser.setRole(roleRepository.findByRole(Role.ROLES.ADMIN.name()));
newUser = userRepository.save(newUser);
Admin newAdmin = new Admin();
newAdmin.setName(admin.getName());
newAdmin.setAdminAppUser(newUser);
return new UserDTO(newUser.getUserId(), newUser.getEmail());
}
}
package com.school.project.service.userRegistration.student;
import com.school.project.dto.registrationDTO.StudentRegistrationDTO;
import com.school.project.dto.registrationDTO.UserDTO;
import com.school.project.dto.userRegistration.StudentRegistrationDTO;
import com.school.project.dto.userRegistration.UserDTO;
public interface StudentRegistrationService {
......
package com.school.project.service.userRegistration.student;
import com.school.project.dto.registrationDTO.StudentRegistrationDTO;
import com.school.project.dto.registrationDTO.UserDTO;
import com.school.project.model.registration.Role;
import com.school.project.model.registration.Student;
import com.school.project.model.registration.User;
import com.school.project.repository.registrationRepositery.RoleRepository;
import com.school.project.repository.registrationRepositery.StudentRegRepository;
import com.school.project.repository.registrationRepositery.UserRepository;
import com.school.project.dto.userRegistration.StudentRegistrationDTO;
import com.school.project.dto.userRegistration.UserDTO;
import com.school.project.model.userRegistration.Role;
import com.school.project.model.userRegistration.Student;
import com.school.project.model.userRegistration.User;
import com.school.project.repository.userRegistration.RoleRepository;
import com.school.project.repository.userRegistration.StudentRegRepository;
import com.school.project.repository.userRegistration.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
......@@ -49,7 +49,7 @@ public class StudentRegistrationServiceImpl implements StudentRegistrationServic
newStudent.setName(studentRegistrationDTO.getName());
newStudent.setAge(studentRegistrationDTO.getAge());
newStudent.setStudentAppUser(newUser);
newStudent.setRollNumber(UUID.randomUUID().toString());
newStudent.setRollNumber(studentRegistrationDTO.getRollNumber());
studentRegRepository.save(newStudent);
......
package com.school.project.service.userRegistration.teacher;
import com.school.project.dto.registrationDTO.TeacherRegistrationDTO;
import com.school.project.dto.registrationDTO.UserDTO;
import com.school.project.dto.userRegistration.TeacherRegistrationDTO;
import com.school.project.dto.userRegistration.UserDTO;
public interface TeacherRegistrationService {
public UserDTO registerTeacher(TeacherRegistrationDTO teacherRegistrationDTO);
......
package com.school.project.service.userRegistration.teacher;
import com.school.project.dto.registrationDTO.TeacherRegistrationDTO;
import com.school.project.dto.registrationDTO.UserDTO;
import com.school.project.model.registration.Role;
import com.school.project.model.registration.Teacher;
import com.school.project.model.registration.User;
import com.school.project.repository.registrationRepositery.RoleRepository;
import com.school.project.repository.registrationRepositery.TeacherRegRepository;
import com.school.project.repository.registrationRepositery.UserRepository;
import com.school.project.dto.userRegistration.TeacherRegistrationDTO;
import com.school.project.dto.userRegistration.UserDTO;
import com.school.project.model.userRegistration.Role;
import com.school.project.model.userRegistration.Teacher;
import com.school.project.model.userRegistration.User;
import com.school.project.repository.userRegistration.RoleRepository;
import com.school.project.repository.userRegistration.TeacherRegRepository;
import com.school.project.repository.userRegistration.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment