Каждый пользователь имеет свои собственные данные в списке, когда он / она войдет в систему под своими учетными данными - PullRequest
0 голосов
/ 14 октября 2019

В моем проекте N-номер пользователя доступен. Каждый пользователь может сделать вставку обновления удаленного списка данных. У каждого пользователя разные данные. Предположим, у одного пользователя 10 записей, у другого пользователя 20 записей, у 3-го пользователя 15 записей и т. д.

Я попытался сделать так, чтобы несколько пользователей могли зарегистрироваться и войти в мое приложение, указав первого пользователя на стороне. запись и отображение, а затем выход из системы. Я снова войду в систему с другим пользователем, после чего отобразятся те же данные, которые были вставлены предыдущим пользователем. Так что моя проблема заключается в том, как сохранить все пользовательские данные под своей учетной записью. Я новичок в весенней загрузке с hibernate, jsp.

1.Usercontroller.java

package com.rajesh.controller;
import javax.servlet.http.HttpSession;
import javax.validation.Valid;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.rajesh.model.User;
import com.rajesh.service.UserService;

@Controller
public class UserController {
    private final Logger logger = LoggerFactory.getLogger(UserController.class);
    @Autowired
    private UserService userService;
    @GetMapping("/")
    public String Home(Model model) {
        return "home";
    }
    @PostMapping("/user/register")
    public String registerNewUser(ModelMap model, @ModelAttribute("userRegister")@Valid User user, BindingResult bindingResult) {

        User userExists = userService.findUserByEmail(user.getEmail());
        if (userExists != null) {
            bindingResult
                    .rejectValue("email", "error.user",
                            "There is already a user registered with the email provided");
            model.addAttribute("msgEmail", "your email is already registered");
            logger.info("your email Id is already registered");
            System.out.println("your email is already registered");
            return "home";
        } else {
            userService.saveUser(user);
            model.addAttribute("successMessage", "User has been registered successfully");
            logger.info("User has been registered successfully");
            System.out.println("User has been registered successfully");
            return "home";
        }
    }

    @PostMapping("/user/login") 
    public String doLogin(ModelMap model, @ModelAttribute("command")User user, HttpSession session) {

        if(userService.loginUser(user.getEmail(), user.getPassword()) != null) {
            session.setAttribute("email",user.getEmail());
            session.setAttribute("user_id", user.getId());
            model.addAttribute("sucessLogin", "You are login sucessfully");
            logger.info("You are login sucessfully",user.getEmail());
            System.out.println("You are login sucessfully "+ user.getEmail());
            return "redirect:userdashboard";
        }else {
            System.out.println("Invalid Email/Password");
            logger.error("Invalid Email/Password");
            model.put("failed", "Invalid Email/Password");
            return "home";
        }       
    }
    @PostMapping("/user/checkstatus")
    @ResponseBody
    public Integer checkUserStatus(String email, ModelMap model, @ModelAttribute("command")User user, HttpSession session) {
            int userStatus = userService.isActiveUserStatus(email);
            System.out.println(userStatus);
            if(userStatus != 0) {
                System.out.println(userStatus);
                return userStatus;
            }else {
                System.out.println(userStatus);
                return userStatus;
            }
    }
    @GetMapping("/logout")
    public String doLogout(ModelMap model, @ModelAttribute("command")User user, HttpSession session) {
        session.removeAttribute("email");
        logger.info("you are logout successfully");
        return "home";
    }
}

User.java
package com.rajesh.model;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.Table;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotEmpty;
import org.hibernate.validator.constraints.Length;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
 * @author Rajesh Bhushan
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "users")
public class User extends BaseEntity{

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "user_id")
    private int id;

    @Column(name="shopname")
    @Length(min = 3, message = "*Your shopname must have at least 3 characters")
    @NotEmpty(message = "*Please provide an shopname")
    private String shopname;

    @Column(name="name")
    @Length(min = 3, message = "*Your name must have at least 3 characters")
    @NotEmpty(message = "*Please provide an name")
    private String name;

    @Column(name="address")
    @Length(min = 3, message = "*Your address must have at least 3 characters")
    @NotEmpty(message = "*Please provide an address")
    private String address;

    @Column(name="mobile")
    @NotEmpty(message = "*Please provide an address")
    private String mobile;

    @Column(name = "email")
    @Email(message = "*Please provide a valid Email")
    @NotEmpty(message = "*Please provide an email")
    private String email;

    @Column(name = "password")
    @NotEmpty(message = "*Please provide your password") 
    private String password;

    @Column(name="active")
    private int active;

    @ManyToMany(cascade = CascadeType.ALL)
    @JoinTable(name = "user_role", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = "role_id"))
    private Set<Role> roles;

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getShopname() {
        return shopname;
    }
    public void setShopname(String shopname) {
        this.shopname = shopname;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public String getMobile() {
        return mobile;
    }
    public void setMobile(String mobile) {
        this.mobile = mobile;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public int getActive() {
        return active;
    }
    public void setActive(int active) {
        this.active = active;
    }
    public Set<Role> getRoles() {
        return roles;
    }
    public void setRoles(Set<Role> roles) {
        this.roles = roles;
    }
}

UserRepository.java
package com.rajesh.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;

import com.rajesh.model.User;
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
    public User findByEmail(String email);
    @Query("from User as u where u.email=:email and u.password=:password")
    public User loginUser(String email,String password);
    @Query("select active from User as u where u.email=:email")
    public Integer isActiveUserStatus(String email);
}

4.UserService.java

package com.rajesh.service;
import java.util.Arrays;
import java.util.Date;
import java.util.HashSet;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.rajesh.model.Role;
import com.rajesh.model.User;
import com.rajesh.repository.RoleRepository;
import com.rajesh.repository.UserRepository;

@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;
    @Autowired
    private RoleRepository roleRepository;

    public User findUserByEmail(String email) {
        return userRepository.findByEmail(email);
    }
    public void saveUser(User user) {
        user.setShopname(user.getShopname());
        user.setName(user.getName());
        user.setEmail(user.getEmail());
        user.setPassword(user.getPassword());
        user.setMobile(user.getMobile());
        user.setAddress(user.getAddress());
        user.setActive(0);
        user.setCreatedBy(user.getName());
        user.setCreatedDate(new Date());
        user.setUpdatedBy(user.getName());
        user.setUpdatedDate(new Date());

        Role userRole  = roleRepository.findByRole("USER");
        user.setRoles(new HashSet<Role>(Arrays.asList(userRole)));
        userRepository.save(user);
    }
    public User loginUser(String email,String password) {
        return userRepository.loginUser(email, password);
    }
    public Integer isActiveUserStatus(String email) {
        Integer activeStatus =  userRepository.isActiveUserStatus(email);
        return activeStatus;
    }
}

1 Ответ

0 голосов
/ 14 октября 2019

Создать столбец идентификатора пользователя в таблице данных. Поэтому при перечислении данных получайте данные в соответствии с идентификатором пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...