From 078efb35695e3b14d783170d013f8975a4d79acd Mon Sep 17 00:00:00 2001 From: Chirag Date: Sat, 17 Feb 2024 02:17:15 +0530 Subject: [PATCH 1/6] rebased to auth branch --- .../config/SecurityConfiguration.java | 16 +++++-- .../config/UserInfoUserDetails.java | 7 ++- .../gatekeeper/controller/RoleController.java | 44 +++++++++++++++++++ .../gatekeeper/controller/UserController.java | 8 +++- .../org/ieeervce/gatekeeper/dto/RoleDTO.java | 22 ++++++++++ .../org/ieeervce/gatekeeper/entity/Role.java | 23 ++++++++++ .../gatekeeper/service/RoleService.java | 20 +++++++++ .../gatekeeper/service/SocietyService.java | 2 +- 8 files changed, 131 insertions(+), 11 deletions(-) create mode 100644 src/main/java/org/ieeervce/gatekeeper/controller/RoleController.java create mode 100644 src/main/java/org/ieeervce/gatekeeper/dto/RoleDTO.java diff --git a/src/main/java/org/ieeervce/gatekeeper/config/SecurityConfiguration.java b/src/main/java/org/ieeervce/gatekeeper/config/SecurityConfiguration.java index 752e999..234cc21 100644 --- a/src/main/java/org/ieeervce/gatekeeper/config/SecurityConfiguration.java +++ b/src/main/java/org/ieeervce/gatekeeper/config/SecurityConfiguration.java @@ -10,6 +10,9 @@ import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer; import org.springframework.security.config.annotation.web.configurers.AuthorizeHttpRequestsConfigurer; import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.crypto.password.NoOpPasswordEncoder; +import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.web.SecurityFilterChain; @Configuration @@ -20,7 +23,10 @@ public class SecurityConfiguration { public UserDetailsService userDetailsService() { return new UserInfoUserDetailsService(); } - + @Bean + public PasswordEncoder passwordEncoder() { + return new BCryptPasswordEncoder(); + } @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http.formLogin(Customizer.withDefaults()).httpBasic(Customizer.withDefaults()).authorizeHttpRequests(SecurityConfiguration::getCustomizedHttpAuthorization).csrf(AbstractHttpConfigurer::disable) @@ -29,10 +35,12 @@ public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Excepti } private static void getCustomizedHttpAuthorization(AuthorizeHttpRequestsConfigurer.AuthorizationManagerRequestMatcherRegistry customizer) { customizer - .requestMatchers(HttpMethod.GET, "/register").permitAll() - .requestMatchers(HttpMethod.POST, "/register").permitAll() - .requestMatchers(HttpMethod.POST,"/society").permitAll() + .requestMatchers(HttpMethod.POST,"/society").authenticated() .requestMatchers(HttpMethod.POST,"/user").permitAll() + .requestMatchers(HttpMethod.POST,"/role").authenticated() + .requestMatchers(HttpMethod.GET,"/role/**").authenticated() + .requestMatchers(HttpMethod.PUT,"/role/**").authenticated() + .requestMatchers(HttpMethod.DELETE,"/role/**").authenticated() .anyRequest().permitAll(); } diff --git a/src/main/java/org/ieeervce/gatekeeper/config/UserInfoUserDetails.java b/src/main/java/org/ieeervce/gatekeeper/config/UserInfoUserDetails.java index 4abecac..321eddb 100644 --- a/src/main/java/org/ieeervce/gatekeeper/config/UserInfoUserDetails.java +++ b/src/main/java/org/ieeervce/gatekeeper/config/UserInfoUserDetails.java @@ -12,14 +12,13 @@ * implementation of UserDetails interface by spring security and mapping the data members to the user info */ public class UserInfoUserDetails implements UserDetails { - - private String userEmail; + private String userName; private String password; private boolean isEnabled; private List authorities; public UserInfoUserDetails(User userInfo){ - userEmail = userInfo.getEmail(); + userName = userInfo.getEmail(); password = userInfo.getPassword(); isEnabled = userInfo.isEnabled(); } @@ -36,7 +35,7 @@ public String getPassword() { @Override public String getUsername() { - return userEmail; + return userName; } @Override diff --git a/src/main/java/org/ieeervce/gatekeeper/controller/RoleController.java b/src/main/java/org/ieeervce/gatekeeper/controller/RoleController.java new file mode 100644 index 0000000..2f30a2e --- /dev/null +++ b/src/main/java/org/ieeervce/gatekeeper/controller/RoleController.java @@ -0,0 +1,44 @@ +package org.ieeervce.gatekeeper.controller; + +import org.ieeervce.gatekeeper.ItemNotFoundException; +import org.ieeervce.gatekeeper.dto.RoleDTO; +import org.ieeervce.gatekeeper.dto.SocietyDTO; +import org.ieeervce.gatekeeper.entity.Role; +import org.ieeervce.gatekeeper.service.RoleService; +import org.modelmapper.ModelMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping("/role") +public class RoleController { + private final RoleService roleService; + private final ModelMapper modelMapper; + @Autowired + public RoleController(RoleService roleService, ModelMapper modelMapper){ + this.roleService= roleService; + this.modelMapper=modelMapper; + } + @GetMapping("/{roleId}") + public Role getRole(@PathVariable Integer roleId) throws ItemNotFoundException { + return roleService.findOne(roleId); + + } + @PostMapping + public Role addRole(@RequestBody RoleDTO roleDTO){ + Role role = modelMapper.map(roleDTO,Role.class); + return roleService.add(role); + } + + @PutMapping("/{roleId}") + public Role editRole (@PathVariable Integer roleId, @RequestBody RoleDTO roleDTO) throws ItemNotFoundException{ + Role role = modelMapper.map(roleDTO,Role.class); + return roleService.edit(roleId,role); + + } + + @DeleteMapping("/{roleId}") + public void delete(@PathVariable Integer roleId) throws ItemNotFoundException{ + roleService.delete(roleId); + } +} diff --git a/src/main/java/org/ieeervce/gatekeeper/controller/UserController.java b/src/main/java/org/ieeervce/gatekeeper/controller/UserController.java index 235380e..93dfdf4 100644 --- a/src/main/java/org/ieeervce/gatekeeper/controller/UserController.java +++ b/src/main/java/org/ieeervce/gatekeeper/controller/UserController.java @@ -11,6 +11,7 @@ import org.modelmapper.ModelMapper; import org.modelmapper.PropertyMap; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.web.bind.annotation.*; import org.ieeervce.gatekeeper.service.UserService; @@ -29,12 +30,15 @@ protected void configure() { skip().setUserId(null); } }; + + private PasswordEncoder passwordEncoder; @Autowired - public UserController(UserService userService, ModelMapper modelMapper,SocietyService societyService,RoleService roleService) { + public UserController(UserService userService, ModelMapper modelMapper,SocietyService societyService,RoleService roleService, PasswordEncoder passwordEncoder) { this.userService = userService; this.modelMapper = modelMapper; this.societyService = societyService; this.roleService= roleService; + this.passwordEncoder = passwordEncoder; this.modelMapper.addMappings(skipReferencedFieldsMap); this.modelMapper.getConfiguration().setAmbiguityIgnored(true); } @@ -42,7 +46,7 @@ public UserController(UserService userService, ModelMapper modelMapper,SocietySe @PostMapping User addUser(@RequestBody UserDTO userDTO) throws InvalidDataException { User user = modelMapper.map(userDTO,User.class); - + user.setPassword(passwordEncoder.encode(userDTO.getPassword())); try { if(userDTO.getSocietyId()!=null) { Society society = societyService.findOne(userDTO.getSocietyId()); diff --git a/src/main/java/org/ieeervce/gatekeeper/dto/RoleDTO.java b/src/main/java/org/ieeervce/gatekeeper/dto/RoleDTO.java new file mode 100644 index 0000000..3504d05 --- /dev/null +++ b/src/main/java/org/ieeervce/gatekeeper/dto/RoleDTO.java @@ -0,0 +1,22 @@ +package org.ieeervce.gatekeeper.dto; + +public class RoleDTO { + private int value; + private String roleName; + + public int getValue() { + return value; + } + + public String getRoleName() { + return roleName; + } + + public void setRoleName(String role) { + this.roleName = role; + } + + public void setValue(int value) { + this.value = value; + } +} diff --git a/src/main/java/org/ieeervce/gatekeeper/entity/Role.java b/src/main/java/org/ieeervce/gatekeeper/entity/Role.java index ce61336..a2faf51 100644 --- a/src/main/java/org/ieeervce/gatekeeper/entity/Role.java +++ b/src/main/java/org/ieeervce/gatekeeper/entity/Role.java @@ -14,4 +14,27 @@ public class Role { @Column(unique = true,nullable = false) private String roleName; + public String getRoleName() { + return roleName; + } + + public void setRoleName(String roleName) { + this.roleName = roleName; + } + + public int getValue() { + return value; + } + + public void setValue(int value) { + this.value = value; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } } diff --git a/src/main/java/org/ieeervce/gatekeeper/service/RoleService.java b/src/main/java/org/ieeervce/gatekeeper/service/RoleService.java index 4187cc6..69b5e6e 100644 --- a/src/main/java/org/ieeervce/gatekeeper/service/RoleService.java +++ b/src/main/java/org/ieeervce/gatekeeper/service/RoleService.java @@ -1,11 +1,15 @@ package org.ieeervce.gatekeeper.service; +import jakarta.transaction.Transactional; import org.ieeervce.gatekeeper.ItemNotFoundException; import org.ieeervce.gatekeeper.entity.Role; import org.ieeervce.gatekeeper.repository.RoleRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.swing.text.html.Option; +import java.util.Optional; + @Service public class RoleService { private static final String ITEM_NOT_FOUND="Role ID Not Found"; @@ -17,6 +21,22 @@ public RoleService(RoleRepository roleRepository){ public Role findOne(Integer roleId) throws ItemNotFoundException { return roleRepository.findById(roleId).orElseThrow(()->new ItemNotFoundException(ITEM_NOT_FOUND + roleId)); } + public Role add(Role role){ + return roleRepository.save(role); + } + @Transactional + public Role edit (Integer roleId, Role editedRole) throws ItemNotFoundException{ + Optional foundRole = roleRepository.findById(roleId); + return foundRole.map(role -> { + editedRole.setId(roleId); + return roleRepository.save(editedRole); + }).orElseThrow(()->new ItemNotFoundException(ITEM_NOT_FOUND+roleId)); + + } + + public void delete(Integer roleId){ + roleRepository.deleteById(roleId); + } } diff --git a/src/main/java/org/ieeervce/gatekeeper/service/SocietyService.java b/src/main/java/org/ieeervce/gatekeeper/service/SocietyService.java index 90f52b6..207b70f 100644 --- a/src/main/java/org/ieeervce/gatekeeper/service/SocietyService.java +++ b/src/main/java/org/ieeervce/gatekeeper/service/SocietyService.java @@ -11,7 +11,7 @@ import java.util.Optional; /** - * Create/Read/Update/Delete Societies + * Create/Read/Update/Delete Societieshttps://meet.google.com/ggs-tdap-sib */ @Service public class SocietyService { From 0ba7fb1d651ce93fa6f48062adf0d55cc097230b Mon Sep 17 00:00:00 2001 From: Chirag Date: Sat, 17 Feb 2024 16:26:01 +0530 Subject: [PATCH 2/6] added authorisation --- .../gatekeeper/config/SecurityConfiguration.java | 11 ++++++----- .../gatekeeper/config/UserInfoUserDetails.java | 6 +++++- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/ieeervce/gatekeeper/config/SecurityConfiguration.java b/src/main/java/org/ieeervce/gatekeeper/config/SecurityConfiguration.java index 234cc21..864e0da 100644 --- a/src/main/java/org/ieeervce/gatekeeper/config/SecurityConfiguration.java +++ b/src/main/java/org/ieeervce/gatekeeper/config/SecurityConfiguration.java @@ -35,12 +35,13 @@ public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Excepti } private static void getCustomizedHttpAuthorization(AuthorizeHttpRequestsConfigurer.AuthorizationManagerRequestMatcherRegistry customizer) { customizer - .requestMatchers(HttpMethod.POST,"/society").authenticated() .requestMatchers(HttpMethod.POST,"/user").permitAll() - .requestMatchers(HttpMethod.POST,"/role").authenticated() - .requestMatchers(HttpMethod.GET,"/role/**").authenticated() - .requestMatchers(HttpMethod.PUT,"/role/**").authenticated() - .requestMatchers(HttpMethod.DELETE,"/role/**").authenticated() + .requestMatchers(HttpMethod.POST,"/role").hasRole("ADMIN") + .requestMatchers(HttpMethod.PUT,"/role/**").hasRole("ADMIN") + .requestMatchers(HttpMethod.DELETE,"/role/**").hasRole("ADMIN") + .requestMatchers(HttpMethod.POST,"/society").hasRole("ADMIN") + .requestMatchers(HttpMethod.PUT,"/society/**").hasRole("ADMIN") + .requestMatchers(HttpMethod.DELETE,"/society/**").hasRole("ADMIN") .anyRequest().permitAll(); } diff --git a/src/main/java/org/ieeervce/gatekeeper/config/UserInfoUserDetails.java b/src/main/java/org/ieeervce/gatekeeper/config/UserInfoUserDetails.java index 321eddb..9681bd5 100644 --- a/src/main/java/org/ieeervce/gatekeeper/config/UserInfoUserDetails.java +++ b/src/main/java/org/ieeervce/gatekeeper/config/UserInfoUserDetails.java @@ -2,11 +2,14 @@ import org.ieeervce.gatekeeper.entity.User; import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.stereotype.Component; +import java.util.Arrays; import java.util.Collection; import java.util.List; +import java.util.stream.Collectors; /** * implementation of UserDetails interface by spring security and mapping the data members to the user info @@ -21,11 +24,12 @@ public UserInfoUserDetails(User userInfo){ userName = userInfo.getEmail(); password = userInfo.getPassword(); isEnabled = userInfo.isEnabled(); + authorities = Arrays.stream((userInfo.getRole()).getRoleName().split(",")).map(role->new SimpleGrantedAuthority("ROLE_"+role)).collect(Collectors.toList()); } @Override public Collection getAuthorities() { - return null; + return authorities; } @Override From 56acf6bb25c16fbf5b0a01c2faf4bb242d7c2ffa Mon Sep 17 00:00:00 2001 From: Chirag Date: Mon, 19 Feb 2024 22:38:56 +0530 Subject: [PATCH 3/6] made required changes upon review --- .../config/SecurityConfiguration.java | 1 - .../config/UserInfoUserDetails.java | 19 ++++++++----------- .../gatekeeper/controller/RoleController.java | 7 +++++++ .../gatekeeper/service/RoleService.java | 6 ++++-- .../gatekeeper/service/SocietyService.java | 2 +- 5 files changed, 20 insertions(+), 15 deletions(-) diff --git a/src/main/java/org/ieeervce/gatekeeper/config/SecurityConfiguration.java b/src/main/java/org/ieeervce/gatekeeper/config/SecurityConfiguration.java index 864e0da..8109f0f 100644 --- a/src/main/java/org/ieeervce/gatekeeper/config/SecurityConfiguration.java +++ b/src/main/java/org/ieeervce/gatekeeper/config/SecurityConfiguration.java @@ -11,7 +11,6 @@ import org.springframework.security.config.annotation.web.configurers.AuthorizeHttpRequestsConfigurer; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; -import org.springframework.security.crypto.password.NoOpPasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.web.SecurityFilterChain; diff --git a/src/main/java/org/ieeervce/gatekeeper/config/UserInfoUserDetails.java b/src/main/java/org/ieeervce/gatekeeper/config/UserInfoUserDetails.java index 9681bd5..a6f3852 100644 --- a/src/main/java/org/ieeervce/gatekeeper/config/UserInfoUserDetails.java +++ b/src/main/java/org/ieeervce/gatekeeper/config/UserInfoUserDetails.java @@ -15,31 +15,28 @@ * implementation of UserDetails interface by spring security and mapping the data members to the user info */ public class UserInfoUserDetails implements UserDetails { - private String userName; - private String password; - private boolean isEnabled; - private List authorities; + private final User userInfo; public UserInfoUserDetails(User userInfo){ - userName = userInfo.getEmail(); - password = userInfo.getPassword(); - isEnabled = userInfo.isEnabled(); - authorities = Arrays.stream((userInfo.getRole()).getRoleName().split(",")).map(role->new SimpleGrantedAuthority("ROLE_"+role)).collect(Collectors.toList()); + this.userInfo = userInfo; } @Override public Collection getAuthorities() { + List authorities; + authorities = Arrays.stream((userInfo.getRole()).getRoleName().split(",")).map(role->new SimpleGrantedAuthority("ROLE_"+role)).collect(Collectors.toList()); return authorities; } @Override public String getPassword() { - return password; + + return userInfo.getPassword(); } @Override public String getUsername() { - return userName; + return userInfo.getEmail(); } @Override @@ -59,6 +56,6 @@ public boolean isCredentialsNonExpired() { @Override public boolean isEnabled() { - return isEnabled; + return userInfo.isEnabled(); } } diff --git a/src/main/java/org/ieeervce/gatekeeper/controller/RoleController.java b/src/main/java/org/ieeervce/gatekeeper/controller/RoleController.java index 2f30a2e..4cc1160 100644 --- a/src/main/java/org/ieeervce/gatekeeper/controller/RoleController.java +++ b/src/main/java/org/ieeervce/gatekeeper/controller/RoleController.java @@ -9,6 +9,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.util.List; + @RestController @RequestMapping("/role") public class RoleController { @@ -19,6 +21,11 @@ public RoleController(RoleService roleService, ModelMapper modelMapper){ this.roleService= roleService; this.modelMapper=modelMapper; } + + @GetMapping + public List getAllRoles(){ + return roleService.getAllRoles(); + } @GetMapping("/{roleId}") public Role getRole(@PathVariable Integer roleId) throws ItemNotFoundException { return roleService.findOne(roleId); diff --git a/src/main/java/org/ieeervce/gatekeeper/service/RoleService.java b/src/main/java/org/ieeervce/gatekeeper/service/RoleService.java index 69b5e6e..a610ac9 100644 --- a/src/main/java/org/ieeervce/gatekeeper/service/RoleService.java +++ b/src/main/java/org/ieeervce/gatekeeper/service/RoleService.java @@ -6,8 +6,7 @@ import org.ieeervce.gatekeeper.repository.RoleRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; - -import javax.swing.text.html.Option; +import java.util.List; import java.util.Optional; @Service @@ -24,6 +23,9 @@ public Role findOne(Integer roleId) throws ItemNotFoundException { public Role add(Role role){ return roleRepository.save(role); } + public List getAllRoles(){ + return roleRepository.findAll(); + } @Transactional public Role edit (Integer roleId, Role editedRole) throws ItemNotFoundException{ Optional foundRole = roleRepository.findById(roleId); diff --git a/src/main/java/org/ieeervce/gatekeeper/service/SocietyService.java b/src/main/java/org/ieeervce/gatekeeper/service/SocietyService.java index 207b70f..90f52b6 100644 --- a/src/main/java/org/ieeervce/gatekeeper/service/SocietyService.java +++ b/src/main/java/org/ieeervce/gatekeeper/service/SocietyService.java @@ -11,7 +11,7 @@ import java.util.Optional; /** - * Create/Read/Update/Delete Societieshttps://meet.google.com/ggs-tdap-sib + * Create/Read/Update/Delete Societies */ @Service public class SocietyService { From 03020a84680dd92121f89aa02a849ebe1c81975e Mon Sep 17 00:00:00 2001 From: SundarakrishnanN Date: Sat, 24 Feb 2024 21:04:28 +0530 Subject: [PATCH 4/6] Added option to unsubscribe from emails --- .../java/org/ieeervce/gatekeeper/dto/UserDTO.java | 8 +++++++- .../java/org/ieeervce/gatekeeper/entity/User.java | 11 ++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/ieeervce/gatekeeper/dto/UserDTO.java b/src/main/java/org/ieeervce/gatekeeper/dto/UserDTO.java index f0a1678..75da332 100644 --- a/src/main/java/org/ieeervce/gatekeeper/dto/UserDTO.java +++ b/src/main/java/org/ieeervce/gatekeeper/dto/UserDTO.java @@ -13,6 +13,7 @@ public class UserDTO { private Long number; private boolean enabled; + private boolean unsubscribed; private LocalDateTime createdAt; private LocalDateTime updatedAt; @@ -91,6 +92,11 @@ public void setName(String name) { this.name = name; } + public boolean isUnsubscribed() { + return unsubscribed; + } - + public void setUnsubscribed(boolean unsubscribed) { + this.unsubscribed = unsubscribed; + } } diff --git a/src/main/java/org/ieeervce/gatekeeper/entity/User.java b/src/main/java/org/ieeervce/gatekeeper/entity/User.java index 946e187..ea62fd6 100644 --- a/src/main/java/org/ieeervce/gatekeeper/entity/User.java +++ b/src/main/java/org/ieeervce/gatekeeper/entity/User.java @@ -43,7 +43,8 @@ public class User { @Column(nullable = false) private LocalDateTime updatedAt; - + @Column(nullable = false) + private boolean unsubscribed; @Column(nullable = false) private boolean enabled; public void setName(String name) { @@ -116,6 +117,14 @@ public boolean isEnabled() { return enabled; } + public boolean isUnsubscribed() { + return unsubscribed; + } + + public void setUnsubscribed(boolean unsubscribed) { + this.unsubscribed = unsubscribed; + } + public void setSociety(Society society){ this.society=society; } From 6605ebd9d2c7fef3d926e1eca03a50878f855a9d Mon Sep 17 00:00:00 2001 From: Chirag Date: Sun, 3 Mar 2024 01:07:17 +0530 Subject: [PATCH 5/6] added Request form api --- compose.yaml | 4 + .../gatekeeper/PDFNotConversionException.java | 15 +++ .../config/SecurityConfiguration.java | 3 +- .../controller/RequestFormController.java | 79 +++++++++++++++ .../ieeervce/gatekeeper/dto/RequestDTO.java | 46 +++++++++ .../gatekeeper/entity/RequestForm.java | 97 ++++++++++++++++++- .../repository/RequestFormRepository.java | 7 ++ .../gatekeeper/repository/UserRepository.java | 1 + .../service/RequestFormService.java | 47 +++++++++ .../gatekeeper/service/UserService.java | 6 +- 10 files changed, 300 insertions(+), 5 deletions(-) create mode 100644 src/main/java/org/ieeervce/gatekeeper/PDFNotConversionException.java create mode 100644 src/main/java/org/ieeervce/gatekeeper/controller/RequestFormController.java create mode 100644 src/main/java/org/ieeervce/gatekeeper/dto/RequestDTO.java create mode 100644 src/main/java/org/ieeervce/gatekeeper/repository/RequestFormRepository.java create mode 100644 src/main/java/org/ieeervce/gatekeeper/service/RequestFormService.java diff --git a/compose.yaml b/compose.yaml index 4d2047e..2dc91aa 100644 --- a/compose.yaml +++ b/compose.yaml @@ -8,3 +8,7 @@ services: - 'MYSQL_USER=myuser' ports: - '3306' + volumes: + - mysql_data:/var/lib/mysql +volumes: + mysql_data: \ No newline at end of file diff --git a/src/main/java/org/ieeervce/gatekeeper/PDFNotConversionException.java b/src/main/java/org/ieeervce/gatekeeper/PDFNotConversionException.java new file mode 100644 index 0000000..112a5cb --- /dev/null +++ b/src/main/java/org/ieeervce/gatekeeper/PDFNotConversionException.java @@ -0,0 +1,15 @@ +package org.ieeervce.gatekeeper; + +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.ResponseStatus; + +@ResponseStatus(HttpStatus.BAD_REQUEST) +public class PDFNotConversionException extends Exception{ + public PDFNotConversionException(String message){ + super(message); + } +} + + + + diff --git a/src/main/java/org/ieeervce/gatekeeper/config/SecurityConfiguration.java b/src/main/java/org/ieeervce/gatekeeper/config/SecurityConfiguration.java index 8109f0f..12057a1 100644 --- a/src/main/java/org/ieeervce/gatekeeper/config/SecurityConfiguration.java +++ b/src/main/java/org/ieeervce/gatekeeper/config/SecurityConfiguration.java @@ -41,7 +41,8 @@ private static void getCustomizedHttpAuthorization(AuthorizeHttpRequestsConfigur .requestMatchers(HttpMethod.POST,"/society").hasRole("ADMIN") .requestMatchers(HttpMethod.PUT,"/society/**").hasRole("ADMIN") .requestMatchers(HttpMethod.DELETE,"/society/**").hasRole("ADMIN") - .anyRequest().permitAll(); + .anyRequest().authenticated(); + } } diff --git a/src/main/java/org/ieeervce/gatekeeper/controller/RequestFormController.java b/src/main/java/org/ieeervce/gatekeeper/controller/RequestFormController.java new file mode 100644 index 0000000..d9b89d2 --- /dev/null +++ b/src/main/java/org/ieeervce/gatekeeper/controller/RequestFormController.java @@ -0,0 +1,79 @@ +package org.ieeervce.gatekeeper.controller; + +import jakarta.mail.Multipart; +import org.ieeervce.gatekeeper.InvalidDataException; +import org.ieeervce.gatekeeper.ItemNotFoundException; +import org.ieeervce.gatekeeper.PDFNotConversionException; +import org.ieeervce.gatekeeper.dto.RequestDTO; +import org.ieeervce.gatekeeper.entity.RequestForm; +import org.ieeervce.gatekeeper.entity.Role; +import org.ieeervce.gatekeeper.entity.Society; +import org.ieeervce.gatekeeper.entity.User; +import org.ieeervce.gatekeeper.service.RequestFormService; +import org.ieeervce.gatekeeper.service.UserService; +import org.modelmapper.ModelMapper; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.awt.*; +import java.util.List; + +@RestController +@RequestMapping("/requestForm") +public class RequestFormController { + + private final ModelMapper modelMapper; + private final RequestFormService requestFormService; + + private final UserService userService; + RequestFormController(RequestFormService requestFormService, ModelMapper modelMapper, UserService userService){ + this.requestFormService = requestFormService; + this.modelMapper= modelMapper; + this.userService = userService; + } + + @GetMapping + public List getAll(){ + return requestFormService.list(); + } + + @GetMapping("/{requestFormId}") + public RequestForm getOne(@PathVariable Long requestFormId) throws ItemNotFoundException { + return requestFormService.findOne(requestFormId); + } + + @DeleteMapping("/{requestFormID}") + public void deleteRequestForm(@PathVariable Long requestFormId) throws ItemNotFoundException{ + requestFormService.delete(requestFormId); + } + + @PostMapping(consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + public RequestForm postRequestForm(@RequestParam("eventTitle") String eventTitle, @RequestParam("isFinance") boolean isFinance , @RequestParam("requesterUserId") Integer requesterUserId, @RequestParam("formPDF") MultipartFile formPDF ) throws InvalidDataException,PDFNotConversionException{ + RequestForm requestForm = new RequestForm(); + requestForm.setEventTitle(eventTitle); + requestForm.setFinance(isFinance); + + try { + requestForm.setFormPDF(formPDF.getBytes()); + if (requesterUserId != null) { + User user = userService.getUserById(requesterUserId); + requestForm.setRequester(user); + } + } + catch(ItemNotFoundException e ){ + throw new InvalidDataException("Invalid user Id"); + } + catch (java.io.IOException e){ + throw new PDFNotConversionException("Could not store pdf"); + } + + return requestFormService.save(requestForm); + } + + @PutMapping("/{requestFormId}") + public RequestForm editRequestForm(@RequestBody RequestDTO requestDTO,@PathVariable Long requestFormId) throws ItemNotFoundException{ + RequestForm editedRequestForm = modelMapper.map(requestDTO, RequestForm.class); + return requestFormService.edit(requestFormId, editedRequestForm); + } +} diff --git a/src/main/java/org/ieeervce/gatekeeper/dto/RequestDTO.java b/src/main/java/org/ieeervce/gatekeeper/dto/RequestDTO.java new file mode 100644 index 0000000..5a45625 --- /dev/null +++ b/src/main/java/org/ieeervce/gatekeeper/dto/RequestDTO.java @@ -0,0 +1,46 @@ +package org.ieeervce.gatekeeper.dto; + +import org.ieeervce.gatekeeper.entity.FinalStatus; +import org.springframework.web.multipart.MultipartFile; + +public class RequestDTO { + private String eventTitle; + private Integer requesterUserId; + + private boolean isFinance ; + private MultipartFile formPDF ; + + + public String getEventTitle() { + return eventTitle; + } + + public void setEventTitle(String eventTitle) { + this.eventTitle = eventTitle; + } + + public Integer getRequesterUserId() { + return requesterUserId; + } + + public void setRequesterUserId(Integer requesterUserId) { + this.requesterUserId = requesterUserId; + } + + + public boolean isFinance() { + return isFinance; + } + + public void setFinance(boolean finance) { + isFinance = finance; + } + + public MultipartFile getFormPDF() { + return formPDF; + } + + public void setFormPDF(MultipartFile formPDF) { + this.formPDF = formPDF; + } +} diff --git a/src/main/java/org/ieeervce/gatekeeper/entity/RequestForm.java b/src/main/java/org/ieeervce/gatekeeper/entity/RequestForm.java index b492243..f099142 100644 --- a/src/main/java/org/ieeervce/gatekeeper/entity/RequestForm.java +++ b/src/main/java/org/ieeervce/gatekeeper/entity/RequestForm.java @@ -1,6 +1,9 @@ package org.ieeervce.gatekeeper.entity; import jakarta.persistence.*; +import org.hibernate.annotations.CreationTimestamp; +import org.hibernate.annotations.UpdateTimestamp; + import java.time.LocalDateTime; import java.util.List; @@ -13,14 +16,19 @@ public class RequestForm { @Column(nullable = false) private String eventTitle; + @Column(nullable = false, columnDefinition = "integer default 0") + private int formValue; + @ManyToOne @JoinColumn(name = "requester",referencedColumnName = "userId") private User requester; - + @CreationTimestamp @Column(nullable = false) - private LocalDateTime dateTime; - + private LocalDateTime createdAt; + @UpdateTimestamp + @Column(nullable = false) + private LocalDateTime updatedAt; @Enumerated(EnumType.STRING) private FinalStatus status; @@ -31,5 +39,88 @@ public class RequestForm { @OneToMany(mappedBy = "formId", cascade = CascadeType.ALL) private List reviewLogs; + @Column(nullable = false) + private boolean isFinance; + + public boolean isFinance() { + return isFinance; + } + + public void setFinance(boolean finance) { + isFinance = finance; + } + + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getEventTitle() { + return eventTitle; + } + + public void setEventTitle(String eventTitle) { + this.eventTitle = eventTitle; + } + + public User getRequester() { + return requester; + } + + public void setRequester(User requester) { + this.requester = requester; + } + + + public FinalStatus getStatus() { + return status; + } + + public void setStatus(FinalStatus status) { + this.status = status; + } + + public void setFormValue(int formValue) { + this.formValue = formValue; + } + + public int getFormValue() { + return formValue; + } + + public byte[] getFormPDF() { + return formPDF; + } + + public void setFormPDF(byte[] formPDF) { + this.formPDF = formPDF; + } + + public List getReviewLogs() { + return reviewLogs; + } + + public void setReviewLogs(List reviewLogs) { + this.reviewLogs = reviewLogs; + } + + public LocalDateTime getCreatedAt() { + return createdAt; + } + + public void setCreatedAt(LocalDateTime createdAt) { + this.createdAt = createdAt; + } + + public LocalDateTime getUpdatedAt() { + return updatedAt; + } + public void setUpdatedAt(LocalDateTime updatedAt) { + this.updatedAt = updatedAt; + } } diff --git a/src/main/java/org/ieeervce/gatekeeper/repository/RequestFormRepository.java b/src/main/java/org/ieeervce/gatekeeper/repository/RequestFormRepository.java new file mode 100644 index 0000000..8583c00 --- /dev/null +++ b/src/main/java/org/ieeervce/gatekeeper/repository/RequestFormRepository.java @@ -0,0 +1,7 @@ +package org.ieeervce.gatekeeper.repository; + +import org.ieeervce.gatekeeper.entity.RequestForm; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface RequestFormRepository extends JpaRepository { +} diff --git a/src/main/java/org/ieeervce/gatekeeper/repository/UserRepository.java b/src/main/java/org/ieeervce/gatekeeper/repository/UserRepository.java index 2598788..29cf18c 100644 --- a/src/main/java/org/ieeervce/gatekeeper/repository/UserRepository.java +++ b/src/main/java/org/ieeervce/gatekeeper/repository/UserRepository.java @@ -11,4 +11,5 @@ public interface UserRepository extends JpaRepository { Optional findByEmail(String email); User findByName(String name); + } diff --git a/src/main/java/org/ieeervce/gatekeeper/service/RequestFormService.java b/src/main/java/org/ieeervce/gatekeeper/service/RequestFormService.java new file mode 100644 index 0000000..8995638 --- /dev/null +++ b/src/main/java/org/ieeervce/gatekeeper/service/RequestFormService.java @@ -0,0 +1,47 @@ +package org.ieeervce.gatekeeper.service; + +import jakarta.transaction.Transactional; +import org.ieeervce.gatekeeper.ItemNotFoundException; +import org.ieeervce.gatekeeper.entity.RequestForm; +import org.ieeervce.gatekeeper.repository.RequestFormRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; + +@Service +public class RequestFormService { + + static final String ITEM_NOT_FOUND="Request Form Not Found"; + private final RequestFormRepository requestFormRepository; +@Autowired +RequestFormService(RequestFormRepository requestFormRepository){ + this.requestFormRepository= requestFormRepository; +} +public RequestForm findOne(Long requestFormId)throws ItemNotFoundException{ + return requestFormRepository.findById(requestFormId).orElseThrow(()-> new ItemNotFoundException(ITEM_NOT_FOUND + requestFormId)); +} +public RequestForm add(RequestForm requestForm){ + return requestFormRepository.save(requestForm); +} + public List list(){ + return requestFormRepository.findAll(); + } + + public RequestForm save(RequestForm requestForm){ + return requestFormRepository.save(requestForm); + } + public void delete(Long requestFormId){ + requestFormRepository.deleteById(requestFormId); + } + @Transactional + public RequestForm edit(Long requestFormId, RequestForm editedRequestForm) throws ItemNotFoundException{ + Optional existingRequestForm = requestFormRepository.findById(requestFormId); + return existingRequestForm.map((requestForm)->{ + editedRequestForm.setId(requestFormId); + editedRequestForm.setCreatedAt(requestForm.getCreatedAt()); + return requestFormRepository.save(editedRequestForm); + }).orElseThrow(()-> new ItemNotFoundException(ITEM_NOT_FOUND+requestFormId)); + } +} diff --git a/src/main/java/org/ieeervce/gatekeeper/service/UserService.java b/src/main/java/org/ieeervce/gatekeeper/service/UserService.java index 2d9d965..f4b5799 100644 --- a/src/main/java/org/ieeervce/gatekeeper/service/UserService.java +++ b/src/main/java/org/ieeervce/gatekeeper/service/UserService.java @@ -1,5 +1,6 @@ package org.ieeervce.gatekeeper.service; +import org.ieeervce.gatekeeper.ItemNotFoundException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.*; import org.ieeervce.gatekeeper.repository.UserRepository; @@ -9,6 +10,7 @@ @Service public class UserService { + private final String ITEM_NOT_FOUND = "User Id not found"; private final UserRepository repository; @Autowired @@ -31,7 +33,9 @@ public User getUserByName(String name) { return repository.findByName(name); } - + public User getUserById(Integer userId) throws ItemNotFoundException { + return repository.findById(userId).orElseThrow(()-> new ItemNotFoundException(ITEM_NOT_FOUND+userId)); + } } From fc847c11783181c7692c2f67d0e010abcded080a Mon Sep 17 00:00:00 2001 From: SundarakrishnanN Date: Sun, 10 Mar 2024 13:16:01 +0530 Subject: [PATCH 6/6] Modified DB,autogenearting the hierarchy --- .../config/SecurityConfiguration.java | 25 ++++--- .../controller/RequestFormController.java | 68 +++++++++++++++---- .../ieeervce/gatekeeper/dto/RequestDTO.java | 22 ++++++ .../gatekeeper/entity/RequestForm.java | 33 ++++++++- .../repository/ReviewLogRepository.java | 14 ++++ .../gatekeeper/repository/UserRepository.java | 1 - .../gatekeeper/service/ReviewLogService.java | 35 ++++++++++ .../gatekeeper/service/UserService.java | 2 +- src/main/resources/application.properties | 2 +- 9 files changed, 174 insertions(+), 28 deletions(-) create mode 100644 src/main/java/org/ieeervce/gatekeeper/repository/ReviewLogRepository.java create mode 100644 src/main/java/org/ieeervce/gatekeeper/service/ReviewLogService.java diff --git a/src/main/java/org/ieeervce/gatekeeper/config/SecurityConfiguration.java b/src/main/java/org/ieeervce/gatekeeper/config/SecurityConfiguration.java index 12057a1..115174a 100644 --- a/src/main/java/org/ieeervce/gatekeeper/config/SecurityConfiguration.java +++ b/src/main/java/org/ieeervce/gatekeeper/config/SecurityConfiguration.java @@ -1,5 +1,6 @@ package org.ieeervce.gatekeeper.config; +import org.ieeervce.gatekeeper.entity.User; import org.ieeervce.gatekeeper.service.UserInfoUserDetailsService; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -9,11 +10,12 @@ import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer; import org.springframework.security.config.annotation.web.configurers.AuthorizeHttpRequestsConfigurer; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.web.SecurityFilterChain; - @Configuration @EnableWebSecurity public class SecurityConfiguration { @@ -34,15 +36,20 @@ public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Excepti } private static void getCustomizedHttpAuthorization(AuthorizeHttpRequestsConfigurer.AuthorizationManagerRequestMatcherRegistry customizer) { customizer - .requestMatchers(HttpMethod.POST,"/user").permitAll() - .requestMatchers(HttpMethod.POST,"/role").hasRole("ADMIN") - .requestMatchers(HttpMethod.PUT,"/role/**").hasRole("ADMIN") - .requestMatchers(HttpMethod.DELETE,"/role/**").hasRole("ADMIN") - .requestMatchers(HttpMethod.POST,"/society").hasRole("ADMIN") - .requestMatchers(HttpMethod.PUT,"/society/**").hasRole("ADMIN") - .requestMatchers(HttpMethod.DELETE,"/society/**").hasRole("ADMIN") - .anyRequest().authenticated(); +// .requestMatchers(HttpMethod.POST,"/user").hasRole("ADMIN") +// .requestMatchers(HttpMethod.POST,"/role").hasRole("ADMIN") +// .requestMatchers(HttpMethod.PUT,"/role/**").hasRole("ADMIN") +// .requestMatchers(HttpMethod.DELETE,"/role/**").hasRole("ADMIN") +// .requestMatchers(HttpMethod.POST,"/society").hasRole("ADMIN") +// .requestMatchers(HttpMethod.PUT,"/society/**").hasRole("ADMIN") +// .requestMatchers(HttpMethod.DELETE,"/society/**").hasRole("ADMIN") + .anyRequest().permitAll(); } +public static String getRequesterDetails() +{ + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + return authentication.getName(); +} } diff --git a/src/main/java/org/ieeervce/gatekeeper/controller/RequestFormController.java b/src/main/java/org/ieeervce/gatekeeper/controller/RequestFormController.java index d9b89d2..44006c6 100644 --- a/src/main/java/org/ieeervce/gatekeeper/controller/RequestFormController.java +++ b/src/main/java/org/ieeervce/gatekeeper/controller/RequestFormController.java @@ -5,19 +5,22 @@ import org.ieeervce.gatekeeper.ItemNotFoundException; import org.ieeervce.gatekeeper.PDFNotConversionException; import org.ieeervce.gatekeeper.dto.RequestDTO; -import org.ieeervce.gatekeeper.entity.RequestForm; -import org.ieeervce.gatekeeper.entity.Role; -import org.ieeervce.gatekeeper.entity.Society; -import org.ieeervce.gatekeeper.entity.User; +import org.ieeervce.gatekeeper.entity.*; import org.ieeervce.gatekeeper.service.RequestFormService; +import org.ieeervce.gatekeeper.service.RoleService; import org.ieeervce.gatekeeper.service.UserService; import org.modelmapper.ModelMapper; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import java.util.Optional; import java.awt.*; +import java.security.Principal; import java.util.List; +import java.util.Optional; + +import static org.ieeervce.gatekeeper.config.SecurityConfiguration.getRequesterDetails; @RestController @RequestMapping("/requestForm") @@ -26,11 +29,13 @@ public class RequestFormController { private final ModelMapper modelMapper; private final RequestFormService requestFormService; + private final RoleService roleService; private final UserService userService; - RequestFormController(RequestFormService requestFormService, ModelMapper modelMapper, UserService userService){ + RequestFormController(RequestFormService requestFormService, ModelMapper modelMapper, UserService userService, RoleService roleService){ this.requestFormService = requestFormService; this.modelMapper= modelMapper; this.userService = userService; + this.roleService=roleService; } @GetMapping @@ -49,22 +54,34 @@ public void deleteRequestForm(@PathVariable Long requestFormId) throws ItemNotFo } @PostMapping(consumes = MediaType.MULTIPART_FORM_DATA_VALUE) - public RequestForm postRequestForm(@RequestParam("eventTitle") String eventTitle, @RequestParam("isFinance") boolean isFinance , @RequestParam("requesterUserId") Integer requesterUserId, @RequestParam("formPDF") MultipartFile formPDF ) throws InvalidDataException,PDFNotConversionException{ + public RequestForm postRequestForm(@RequestParam("eventTitle") String eventTitle, @RequestParam("isFinance") boolean isFinance , @RequestParam("formPDF") MultipartFile formPDF ) throws InvalidDataException,PDFNotConversionException{ + System.out.println("in"); RequestForm requestForm = new RequestForm(); requestForm.setEventTitle(eventTitle); requestForm.setFinance(isFinance); + requestForm.setStatus(FinalStatus.PENDING); + + System.out.println(getRequesterDetails()); try { - requestForm.setFormPDF(formPDF.getBytes()); - if (requesterUserId != null) { - User user = userService.getUserById(requesterUserId); - requestForm.setRequester(user); - } + User optionalUser = userService.getUserByEmail(getRequesterDetails()).get(); + requestForm.setRequester(optionalUser); + + + requestForm.setRequestHierarchy(generateHierarchy(optionalUser,isFinance)); + + } catch (Exception e) { + + e.printStackTrace(); } - catch(ItemNotFoundException e ){ - throw new InvalidDataException("Invalid user Id"); - } - catch (java.io.IOException e){ + + try { + requestForm.setFormPDF(formPDF.getBytes()); +// if (requesterUserId != null) { +// User user = userService.getUserById(requesterUserId); +// requestForm.setRequester(user); +// } + } catch (java.io.IOException e){ throw new PDFNotConversionException("Could not store pdf"); } @@ -74,6 +91,27 @@ public RequestForm postRequestForm(@RequestParam("eventTitle") String eventTitle @PutMapping("/{requestFormId}") public RequestForm editRequestForm(@RequestBody RequestDTO requestDTO,@PathVariable Long requestFormId) throws ItemNotFoundException{ RequestForm editedRequestForm = modelMapper.map(requestDTO, RequestForm.class); + return requestFormService.edit(requestFormId, editedRequestForm); } + public List generateHierarchy(User u,boolean isFinance) + { + List rs=roleService.getAllRoles(); + int val=u.getRole().getValue(); + + // int soc=u.getSociety().getSocietyId(); + rs.remove(5); + if(!isFinance) + { + rs.remove(3); + } + if(val==1) + { + rs.remove(2); + rs.remove(0); + rs.remove(0); + + } + return rs; + } } diff --git a/src/main/java/org/ieeervce/gatekeeper/dto/RequestDTO.java b/src/main/java/org/ieeervce/gatekeeper/dto/RequestDTO.java index 5a45625..64a0ea6 100644 --- a/src/main/java/org/ieeervce/gatekeeper/dto/RequestDTO.java +++ b/src/main/java/org/ieeervce/gatekeeper/dto/RequestDTO.java @@ -1,8 +1,11 @@ package org.ieeervce.gatekeeper.dto; import org.ieeervce.gatekeeper.entity.FinalStatus; +import org.ieeervce.gatekeeper.entity.Role; import org.springframework.web.multipart.MultipartFile; +import java.util.List; + public class RequestDTO { private String eventTitle; private Integer requesterUserId; @@ -10,6 +13,25 @@ public class RequestDTO { private boolean isFinance ; private MultipartFile formPDF ; + private List requestHierarchy; + + private int index; + + public int getIndex() { + return index; + } + + public void setIndex(int index) { + this.index = index; + } + + public List getRequestHierarchy() { + return requestHierarchy; + } + + public void setRequestHierarchy(List requestHierarchy) { + this.requestHierarchy = requestHierarchy; + } public String getEventTitle() { return eventTitle; diff --git a/src/main/java/org/ieeervce/gatekeeper/entity/RequestForm.java b/src/main/java/org/ieeervce/gatekeeper/entity/RequestForm.java index f099142..be2ab44 100644 --- a/src/main/java/org/ieeervce/gatekeeper/entity/RequestForm.java +++ b/src/main/java/org/ieeervce/gatekeeper/entity/RequestForm.java @@ -1,6 +1,7 @@ package org.ieeervce.gatekeeper.entity; import jakarta.persistence.*; +import org.hibernate.annotations.ColumnDefault; import org.hibernate.annotations.CreationTimestamp; import org.hibernate.annotations.UpdateTimestamp; @@ -16,9 +17,11 @@ public class RequestForm { @Column(nullable = false) private String eventTitle; - @Column(nullable = false, columnDefinition = "integer default 0") + @Column(nullable = false) + @ColumnDefault("0") private int formValue; + @ManyToOne @JoinColumn(name = "requester",referencedColumnName = "userId") private User requester; @@ -30,12 +33,40 @@ public class RequestForm { @Column(nullable = false) private LocalDateTime updatedAt; + @Enumerated(EnumType.STRING) private FinalStatus status; @Lob @Basic(fetch = FetchType.EAGER) @Column( nullable = false,columnDefinition = "LONGBLOB") private byte[] formPDF; + @ManyToMany + @JoinTable( + name = "request_form_roles", + joinColumns = @JoinColumn(name = "request_form_id"), + inverseJoinColumns = @JoinColumn(name = "role_id") + ) + private List requestHierarchy; + + public List getRequestHierarchy() { + return requestHierarchy; + } + + public void setRequestHierarchy(List requestHierarchy) { + this.requestHierarchy = requestHierarchy; + } + + @Column(nullable = false) + int requestIndex; + + public int getRequestIndex() { + return requestIndex; + } + + public void setRequestIndex(int requestIndex) { + this.requestIndex = requestIndex; + } + @OneToMany(mappedBy = "formId", cascade = CascadeType.ALL) private List reviewLogs; diff --git a/src/main/java/org/ieeervce/gatekeeper/repository/ReviewLogRepository.java b/src/main/java/org/ieeervce/gatekeeper/repository/ReviewLogRepository.java new file mode 100644 index 0000000..a31fa82 --- /dev/null +++ b/src/main/java/org/ieeervce/gatekeeper/repository/ReviewLogRepository.java @@ -0,0 +1,14 @@ +package org.ieeervce.gatekeeper.repository; + + +import org.ieeervce.gatekeeper.entity.ReviewLog; +import org.springframework.data.domain.Sort; +import org.springframework.data.jpa.repository.JpaRepository; +import java.util.List; + +public interface ReviewLogRepository extends JpaRepository { + List findAllById(int Id); + + List findById(Long id, Sort sort); + +} diff --git a/src/main/java/org/ieeervce/gatekeeper/repository/UserRepository.java b/src/main/java/org/ieeervce/gatekeeper/repository/UserRepository.java index 29cf18c..8ce8fce 100644 --- a/src/main/java/org/ieeervce/gatekeeper/repository/UserRepository.java +++ b/src/main/java/org/ieeervce/gatekeeper/repository/UserRepository.java @@ -9,7 +9,6 @@ public interface UserRepository extends JpaRepository { Optional findByEmail(String email); - User findByName(String name); } diff --git a/src/main/java/org/ieeervce/gatekeeper/service/ReviewLogService.java b/src/main/java/org/ieeervce/gatekeeper/service/ReviewLogService.java new file mode 100644 index 0000000..e888b5d --- /dev/null +++ b/src/main/java/org/ieeervce/gatekeeper/service/ReviewLogService.java @@ -0,0 +1,35 @@ +package org.ieeervce.gatekeeper.service; + +import org.ieeervce.gatekeeper.entity.ReviewLog; +import org.ieeervce.gatekeeper.repository.ReviewLogRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Sort; +import org.springframework.stereotype.Service; + +import java.time.LocalDateTime; +import java.util.List; + +@Service +public class ReviewLogService { + private final ReviewLogRepository reviewLogRepository; + + @Autowired + public ReviewLogService(ReviewLogRepository reviewLogRepository) { + this.reviewLogRepository = reviewLogRepository; + } + public ReviewLog addReview(ReviewLog reviewLog) + { + return reviewLogRepository.save(reviewLog); + } + public List viewByFormId(int Id) + { + return reviewLogRepository.findAllById(Id); + } + public List findById(long id, Sort sort) + { + return reviewLogRepository.findById(id,sort); + } + + + +} diff --git a/src/main/java/org/ieeervce/gatekeeper/service/UserService.java b/src/main/java/org/ieeervce/gatekeeper/service/UserService.java index f4b5799..ad4195a 100644 --- a/src/main/java/org/ieeervce/gatekeeper/service/UserService.java +++ b/src/main/java/org/ieeervce/gatekeeper/service/UserService.java @@ -38,4 +38,4 @@ public User getUserById(Integer userId) throws ItemNotFoundException { } -} +} \ No newline at end of file diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 1b7e6d9..ce14d1e 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -5,6 +5,6 @@ spring.datasource.password=verysecret spring.jpa.show-sql=true # generate the ddl if required spring.jpa.generate-ddl=true - +spring.servlet.multipart.max-file-size=10MB spring.security.user.name=chirag spring.security.user.password=chirag \ No newline at end of file