Ignore:
Timestamp:
02/02/22 14:15:35 (2 years ago)
Author:
andrejTavchioski <andrej.tavchioski@…>
Branches:
master
Children:
df4089c
Parents:
9ff45d6
Message:

backend refactoring

Location:
sources/app/src/main/java/parkup/configs
Files:
5 added
4 deleted
7 edited

Legend:

Unmodified
Added
Removed
  • sources/app/src/main/java/parkup/configs/RegistrationServiceRP.java

    r9ff45d6 r9dd526f  
    33import org.springframework.beans.factory.annotation.Autowired;
    44import org.springframework.stereotype.Service;
    5 import parkup.configs.email.EmailSender;
     5import parkup.configs.email.EmailService;
    66import parkup.configs.email.EmailValidator;
     7import parkup.configs.email.Mail;
    78import parkup.configs.token.ConfirmationTokenRP;
    89import parkup.configs.token.ConfirmationTokenService;
    9 import parkup.entities.RegistriranParkirac;
    10 import parkup.services.RegistriranParkiracService;
     10import parkup.entities.RegisteredUser;
     11import parkup.services.RegisteredUserService;
    1112
    1213import javax.transaction.Transactional;
     
    1516@Service
    1617public class RegistrationServiceRP {
    17     private final RegistriranParkiracService registriranParkiracService;
     18    private final RegisteredUserService registeredUserService;
    1819    private final EmailValidator emailValidator;
    1920    private final ConfirmationTokenService confirmationTokenService;
    20     private final EmailSender emailSender;
     21    private final EmailService emailService;
    2122
    2223    @Autowired
    23     public RegistrationServiceRP(RegistriranParkiracService registriranParkiracService, EmailValidator emailValidator,
    24                                  ConfirmationTokenService confirmationTokenService, EmailSender emailSender) {
    25         this.registriranParkiracService = registriranParkiracService;
     24    public RegistrationServiceRP(RegisteredUserService registeredUserService, EmailValidator emailValidator,
     25                                 ConfirmationTokenService confirmationTokenService, EmailService emailService) {
     26        this.registeredUserService = registeredUserService;
    2627        this.emailValidator = emailValidator;
    2728        this.confirmationTokenService = confirmationTokenService;
    28         this.emailSender = emailSender;
     29        this.emailService = emailService;
    2930    }
    3031
    3132    public String register(RegistrationRequest request) {
     33        if (request.getEmail() == null || request.getEmail().isEmpty())
     34            throw new IllegalArgumentException("Missing email");
    3235        boolean isValidEmail = emailValidator.
    3336                test(request.getEmail());
     
    3740        }
    3841
    39         String token = registriranParkiracService.signUpRegistriranParkirac(
    40                 new RegistriranParkirac(
     42        String token = registeredUserService.signUpRegistriranParkirac(
     43                new RegisteredUser(
    4144                        request.getFirstName(),
    4245                        request.getLastName(),
     
    4851
    4952        String link = "http://localhost:8080/registriranParkirac/registration/confirm?token=" + token;
    50         emailSender.send(
    51                 request.getEmail(),
    52                 buildEmail(request.getFirstName(), link));
    53 
     53        Mail mail = new Mail();
     54        mail.setMailTo(request.getEmail());
     55        mail.setMailFrom("noreply_explore_buddy@gmail.com");
     56        mail.setMailSubject("Account confirmation");
     57        mail.setMailContent(buildEmail(request.getEmail(), link));
     58        emailService.sendEmail(mail);
    5459        return token;
    5560    }
     
    7479        confirmationTokenService.setConfirmedAtRP(token);
    7580
    76         registriranParkiracService.enableRegistriranParkirac(confirmationTokenRP.getRegistriranParkirac().getEmail());
     81        registeredUserService.enableRegistriranParkirac(confirmationTokenRP.getRegistriranParkirac().getEmail());
    7782        return "confirmed";
    7883    }
  • sources/app/src/main/java/parkup/configs/email/EmailService.java

    r9ff45d6 r9dd526f  
    11package parkup.configs.email;
    22
    3 import org.slf4j.Logger;
    4 import org.slf4j.LoggerFactory;
     3import org.springframework.beans.factory.annotation.Autowired;
    54import org.springframework.mail.javamail.JavaMailSender;
    65import org.springframework.mail.javamail.MimeMessageHelper;
    7 import org.springframework.scheduling.annotation.Async;
    86import org.springframework.stereotype.Service;
    97
    108import javax.mail.MessagingException;
     9import javax.mail.internet.InternetAddress;
    1110import javax.mail.internet.MimeMessage;
     11import java.io.UnsupportedEncodingException;
    1212
    13 @Service
    14 public class EmailService implements EmailSender{
     13@Service("mailService")
     14public class EmailService implements MailService {
    1515
    16     private final static Logger LOGGER = LoggerFactory.getLogger(EmailService.class);
    17     private final JavaMailSender mailSender;
     16    @Autowired
     17    JavaMailSender mailSender;
    1818
    19     public EmailService(JavaMailSender mailSender) {
    20         this.mailSender = mailSender;
     19    public void sendEmail(Mail mail) {
     20        MimeMessage mimeMessage = mailSender.createMimeMessage();
     21
     22        try {
     23
     24            MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
     25
     26            mimeMessageHelper.setSubject(mail.getMailSubject());
     27            mimeMessageHelper.setFrom(new InternetAddress(mail.getMailFrom(), "parkUp.com"));
     28            mimeMessageHelper.setTo(mail.getMailTo());
     29            mimeMessageHelper.setText(mail.getMailContent(), true);
     30
     31            mailSender.send(mimeMessageHelper.getMimeMessage());
     32
     33        } catch (MessagingException | UnsupportedEncodingException e) {
     34            e.printStackTrace();
     35        }
    2136    }
    2237
    23     @Override
    24     @Async
    25     public void send(String to, String email) {
    26         try {
    27             MimeMessage mimeMessage = mailSender.createMimeMessage();
    28             MimeMessageHelper helper =
    29                     new MimeMessageHelper(mimeMessage, "utf-8");
    30             helper.setText(email, true);
    31             helper.setTo(to);
    32             helper.setSubject("Confirm your email");
    33             helper.setFrom("parkup@gmail.com");
    34             mailSender.send(mimeMessage);
    35         } catch (MessagingException e) {
    36             LOGGER.error("failed to send email", e);
    37             throw new IllegalStateException("failed to send email");
    38         }
    39     }
    4038}
    41 
  • sources/app/src/main/java/parkup/configs/email/EmailValidator.java

    r9ff45d6 r9dd526f  
    11package parkup.configs.email;
     2
    23
    34import org.springframework.stereotype.Service;
    45
    56import java.util.function.Predicate;
     7import java.util.regex.Pattern;
    68
    79@Service
     
    911    @Override
    1012    public boolean test(String s) {
    11         //todo
    12         return true;
     13        String regexPattern = "^[a-zA-Z0-9_!#$%&'*+/=?`{|}~^.-]+@[a-zA-Z0-9.-]+$";
     14        return Pattern.compile(regexPattern).matcher(s).matches();
    1315    }
    1416}
  • sources/app/src/main/java/parkup/configs/token/ConfirmationTokenRP.java

    r9ff45d6 r9dd526f  
    11package parkup.configs.token;
    22
    3 import parkup.entities.RegistriranParkirac;
     3import parkup.entities.RegisteredUser;
    44
    55import javax.persistence.*;
     
    3737    @JoinColumn(nullable = false, name = "registriranParkirac_id")
    3838    //many confirmation tokens to one registriranParkirac
    39     private RegistriranParkirac registriranParkirac;
     39    private RegisteredUser registeredUser;
    4040
    4141    public ConfirmationTokenRP() {}
    4242
    43     public ConfirmationTokenRP(int id, String token, LocalDateTime createdAt, LocalDateTime expiresAt, RegistriranParkirac registriranParkirac) {
     43    public ConfirmationTokenRP(int id, String token, LocalDateTime createdAt, LocalDateTime expiresAt, RegisteredUser registeredUser) {
    4444        this.id = id;
    4545        this.token = token;
    4646        this.createdAt = createdAt;
    4747        this.expiresAt = expiresAt;
    48         this.registriranParkirac = registriranParkirac;
     48        this.registeredUser = registeredUser;
    4949    }
    5050
    51     public ConfirmationTokenRP(String token, LocalDateTime createdAt, LocalDateTime expiresAt, RegistriranParkirac registriranParkirac) {
     51    public ConfirmationTokenRP(String token, LocalDateTime createdAt, LocalDateTime expiresAt, RegisteredUser registeredUser) {
    5252        this.token = token;
    5353        this.createdAt = createdAt;
    5454        this.expiresAt = expiresAt;
    55         this.registriranParkirac = registriranParkirac;
     55        this.registeredUser = registeredUser;
    5656    }
    5757
     
    9696    }
    9797
    98     public RegistriranParkirac getRegistriranParkirac() {
    99         return registriranParkirac;
     98    public RegisteredUser getRegistriranParkirac() {
     99        return registeredUser;
    100100    }
    101101
    102     public void setRegistriranParkirac(RegistriranParkirac registriranParkirac) {
    103         this.registriranParkirac = registriranParkirac;
     102    public void setRegistriranParkirac(RegisteredUser registeredUser) {
     103        this.registeredUser = registeredUser;
    104104    }
    105105}
  • sources/app/src/main/java/parkup/configs/token/ConfirmationTokenRepositoryRP.java

    r9ff45d6 r9dd526f  
    1515    Optional<ConfirmationTokenRP> findByToken(String token);
    1616
    17     void deleteByRegistriranParkirac_RegParkId(int regParkId);
     17    void deleteByRegisteredUser_RegParkId(int regParkId);
    1818
    1919    @Transactional
  • sources/app/src/main/java/parkup/configs/token/ConfirmationTokenService.java

    r9ff45d6 r9dd526f  
    1010
    1111    private final ConfirmationTokenRepositoryRP confirmationTokenRepositoryRP;
    12     private final ConfirmationTokenRepositoryW confirmationTokenRepositoryW;
    1312
    1413
    15     public ConfirmationTokenService(ConfirmationTokenRepositoryRP confirmationTokenRepositoryRP, ConfirmationTokenRepositoryW confirmationTokenRepositoryW, parkup.configs.token.ConfirmationTokenRepositoryW confirmationTokenRepositoryW1) {
     14    public ConfirmationTokenService(ConfirmationTokenRepositoryRP confirmationTokenRepositoryRP) {
    1615        this.confirmationTokenRepositoryRP = confirmationTokenRepositoryRP;
    17         this.confirmationTokenRepositoryW = confirmationTokenRepositoryW1;
    1816    }
    1917    public void saveConfirmationTokenRP(ConfirmationTokenRP token){
     
    2119    }
    2220
    23     public void saveConfirmationTokenW(ConfirmationTokenW token){
    24         confirmationTokenRepositoryW.save(token);}
    2521
    2622    public Optional<ConfirmationTokenRP> getTokenRP(String token) {
    2723        return confirmationTokenRepositoryRP.findByToken(token);
    2824    }
    29     public Optional<ConfirmationTokenW> getTokenW(String token){
    30         return confirmationTokenRepositoryW.findByToken(token);
    31     }
    3225
    33     public void deleteByVraboten_VrabotenId(int vraboten_id){
    34         confirmationTokenRepositoryW.deleteByVraboten_VrabotenId(vraboten_id);
    35     }
    36 
    37     public void deleteByRegistriranParkirac_RegParkId(int regParkId){
    38         confirmationTokenRepositoryRP.deleteByRegistriranParkirac_RegParkId(regParkId);
     26    public void deleteByRegisteredUser_RegParkId(int regParkId){
     27        confirmationTokenRepositoryRP.deleteByRegisteredUser_RegParkId(regParkId);
    3928    }
    4029
     
    4231        return confirmationTokenRepositoryRP.updateConfirmedAt(token, LocalDateTime.now());
    4332    }
    44     public int setConfirmedAtW(String token){
    45         return confirmationTokenRepositoryW.updateConfirmedAt(token,LocalDateTime.now());
    46     }
    4733}
  • sources/app/src/main/java/parkup/configs/webConfigs/WebSecurityConfig.java

    r9ff45d6 r9dd526f  
    33import org.springframework.context.annotation.Bean;
    44import org.springframework.context.annotation.Configuration;
    5 import org.springframework.security.authentication.dao.DaoAuthenticationProvider;
     5import org.springframework.security.authentication.AuthenticationManager;
    66import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
    77import org.springframework.security.config.annotation.web.builders.HttpSecurity;
     
    99import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
    1010import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
    11 import parkup.services.RegistriranParkiracService;
    12 import parkup.services.VrabotenService;
     11import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
     12import org.springframework.web.cors.CorsConfiguration;
     13import parkup.configs.CustomAuthenticationFilter;
     14import parkup.configs.CustomAuthorizationFilter;
     15import parkup.services.AdministratorService;
     16import parkup.services.RegisteredUserService;
     17import parkup.services.WorkerService;
     18
     19import static org.springframework.security.config.http.SessionCreationPolicy.STATELESS;
    1320
    1421@EnableWebSecurity
    1522@Configuration
    1623public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    17         private final VrabotenService vrabotenService;
     24        private final WorkerService workerService;
    1825        private final BCryptPasswordEncoder bCryptPasswordEncoder;
    19         private final RegistriranParkiracService registriranParkiracService;
     26        private final RegisteredUserService registeredUserService;
     27        private final AdministratorService administratorService;
    2028
    21         public WebSecurityConfig(VrabotenService vrabotenService, BCryptPasswordEncoder bCryptPasswordEncoder, RegistriranParkiracService registriranParkiracService) {
    22             this.vrabotenService = vrabotenService;
     29        public WebSecurityConfig(WorkerService workerService, BCryptPasswordEncoder bCryptPasswordEncoder, RegisteredUserService registeredUserService, AdministratorService administratorService) {
     30            this.workerService = workerService;
    2331            this.bCryptPasswordEncoder = bCryptPasswordEncoder;
    24             this.registriranParkiracService = registriranParkiracService;
     32            this.registeredUserService = registeredUserService;
     33            this.administratorService = administratorService;
     34        }
     35
     36        @Override
     37        protected void configure(AuthenticationManagerBuilder auth) throws Exception {
     38            auth.userDetailsService(registeredUserService).passwordEncoder(bCryptPasswordEncoder);
     39            auth.userDetailsService(workerService).passwordEncoder(bCryptPasswordEncoder);
     40            auth.userDetailsService(administratorService).passwordEncoder(bCryptPasswordEncoder);
    2541        }
    2642
    2743        @Override
    2844        protected void configure(HttpSecurity http) throws Exception {
    29             http
    30                     .csrf().disable()
    31                     .authorizeRequests()
    32                         .antMatchers("/registriranParkirac/registration/**")
    33                         .permitAll()
    34                     .anyRequest()
    35                     .authenticated().and().formLogin();//ruta na viktor
    36         }
    37 
    38         @Override
    39         protected void configure(AuthenticationManagerBuilder auth) throws Exception {
    40             auth.authenticationProvider(daoAuthenticationProviderW());
    41             auth.authenticationProvider(daoAuthenticationProviderRP());
     45            CustomAuthenticationFilter customAuthenticationFilter = new CustomAuthenticationFilter(authenticationManagerBean());
     46            customAuthenticationFilter.setFilterProcessesUrl("/api/login");
     47            http.csrf().disable();
     48            http.cors().configurationSource(request -> new CorsConfiguration().applyPermitDefaultValues());
     49            http.sessionManagement().sessionCreationPolicy(STATELESS);
     50            http.authorizeRequests().antMatchers("/**").permitAll();
     51//            http.authorizeRequests().antMatchers("/user/registration/**", "/home/markers","/home/getLocation/**","/api/login/**","/home").permitAll();
     52//            http.authorizeRequests().antMatchers( "/user/setFavourite/**","user/favourites").hasAuthority("ROLE_USER");
     53//            http.authorizeRequests().antMatchers( "/home/**").hasAuthority("ROLE_ADMIN");
     54//            http.authorizeRequests().anyRequest().authenticated();
     55            http.addFilter(customAuthenticationFilter);
     56            http.addFilterBefore(new CustomAuthorizationFilter(), UsernamePasswordAuthenticationFilter.class);
    4257        }
    4358
    4459        @Bean
    45         public DaoAuthenticationProvider daoAuthenticationProviderW() {
    46             DaoAuthenticationProvider provider = new DaoAuthenticationProvider();
    47             provider.setPasswordEncoder(bCryptPasswordEncoder);
    48             provider.setUserDetailsService(vrabotenService);
    49             return provider;
     60        @Override
     61        public AuthenticationManager authenticationManagerBean() throws Exception {
     62            return super.authenticationManagerBean();
    5063        }
    5164
    52         @Bean
    53         public DaoAuthenticationProvider daoAuthenticationProviderRP(){
    54             DaoAuthenticationProvider provider = new DaoAuthenticationProvider();
    55             provider.setPasswordEncoder(bCryptPasswordEncoder);
    56             provider.setUserDetailsService(registriranParkiracService);
    57             return provider;
    58         }
    5965
    6066    }
Note: See TracChangeset for help on using the changeset viewer.