• Bài trước mình đã hướng dẫn phần cấu hình để sử dụng gmail xong xong, bài viết này mình sẽ hướng dẫn các bạn sử dụng gmail để gửi tin nhắn xác thực tài khoản
  • Các bạn tạo một class có tên là EmailService đặt ở trong package Service

xác thực gmail Spring Boot

  • Entity User

xác thực gmail Spring Boot

  • UserRepository

xác thực gmail Spring Boot

  • UserService

  • UserServiceImpl
package com.codegym.quiz.service.impl;



import com.codegym.quiz.model.User;

import com.codegym.quiz.model.UserPrinciple;

import com.codegym.quiz.repository.UserRepository;

import com.codegym.quiz.service.UserService;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.security.core.userdetails.UserDetails;

import org.springframework.security.core.userdetails.UsernameNotFoundException;

import org.springframework.stereotype.Service;

import org.springframework.transaction.annotation.Transactional;



import java.util.Optional;



@Service

public class UserServiceImpl implements UserService {

    @Autowired

    private UserRepository userRepository;



    @Override

    @Transactional

    public UserDetails loadUserByUsername(String username) {

        User user = userRepository.findByUsername(username);

        if (user == null) {

            throw new UsernameNotFoundException(username);

        }

        if (this.checkLogin(user)) {

            return UserPrinciple.build(user);

        }

        boolean enable = false;

        boolean accountNonExpired = false;

        boolean credentialsNonExpired = false;

        boolean accountNonLocked = false;

        return new org.springframework.security.core.userdetails.User(user.getUsername(),

                user.getPassword(), enable, accountNonExpired, credentialsNonExpired,

                accountNonLocked, null);

    }





    @Override

    public void save(User user) {

        userRepository.save(user);

    }



    @Override

    public Iterable<User> findAll() {

        return userRepository.findAll();

    }



    @Override

    public User findByUsername(String username) {

        return userRepository.findByUsername(username);

    }



    @Override

    public Optional<User> findById(Long id) {

        return userRepository.findById(id);

    }



    @Override

    public boolean checkLogin(User user) {

        Iterable<User> users = this.findAll();

        boolean isCorrectUser = false;

        for (User currentUser : users) {

            if (currentUser.getUsername().equals(user.getUsername())

                    && user.getPassword().equals(currentUser.getPassword()) &&

                    currentUser.isEnabled()) {

                isCorrectUser = true;

            }

        }

        return isCorrectUser;

    }



    @Override

    public User findByEmail(String email) {

        return userRepository.findByEmail(email);

    }



    @Override

    public boolean isCorrectConfirmPassword(User user) {

        boolean isCorrectConfirmPassword = false;

        if (user.getPassword().equals(user.getConfirmPassword())) {

            isCorrectConfirmPassword = true;

        }

        return isCorrectConfirmPassword;

    }

}
  • UserController

  • Và đây là kết quả sau khi đăng ký tài khoản thành công

Author: Nguyễn Minh Quân

 

Đăng ký nhận bộ tài liệu kỹ năng dành cho lập trình viên (video hướng dẫn + slide) tại đây

Tìm hiểu thêm về mô hình Coding Bootcamp tại đây