OWL ITS + 탐지시스템(인터넷 진흥원)
wyu
2021-11-02 4e32eef25c59e29af3966345bb5e71c12a886865
src/main/java/kr/wisestone/owl/service/impl/UserServiceImpl.java
@@ -17,7 +17,9 @@
import kr.wisestone.owl.util.*;
import kr.wisestone.owl.vo.*;
import kr.wisestone.owl.web.condition.UserCondition;
import kr.wisestone.owl.web.form.DepartmentManagementForm;
import kr.wisestone.owl.web.form.UserForm;
import kr.wisestone.owl.web.form.UserLevelForm;
import kr.wisestone.owl.web.view.ExcelView;
import org.apache.commons.validator.routines.EmailValidator;
import org.slf4j.Logger;
@@ -32,6 +34,7 @@
import org.springframework.security.core.session.SessionRegistry;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Repository;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.ui.Model;
@@ -53,6 +56,12 @@
    @Autowired
    private UserRepository userRepository;
    @Autowired
    private UserLevelService userLevelService;
    @Autowired
    private DepartmentManagementService departmentManagementService;
    @Autowired
    private SystemRoleService systemRoleService;
@@ -197,7 +206,8 @@
        user.setAccount(CommonUtil.encryptAES128(userForm.getAccount()));
        user.setPassword(this.passwordEncoder.encode(user.getPassword()));
        this.userRepository.saveAndFlush(user);
        //this.userLevelRepository.saveAndFlush(user);
        //userLevelRepository.saveAndFlush(user);
        //  프로필 파일이 유효한지 체크한다.
        this.verifyProfile(profile);
@@ -217,11 +227,30 @@
            this.userInviteService.includePrimaryWorkspace(user, primaryWorkspace);
            // edit by zenith for permission at 20200803
            user.setPermission(MngPermission.USER_PERMISSION_MNG_NONE);
            /*user.setPermission(MngPermission.USER_PERMISSION_MNG_NONE);*/
        } else if(validAdmin == 1) {    // 라이센스 입력 관리자
            Workspace primaryWorkspace = this.workspaceService.getPrimaryWorkspace();
            // UserLevel에 Permission 값 넣어줌
            UserLevelForm userLevelForm = new UserLevelForm();
            // Constants 에서 ADMIN 값 추가
            userLevelForm.setLevelName(Constants.ADMIN_MANAGER);
            // Permission 값 추가
            userLevelForm.setPermission(MngPermission.makeAllPermission());
            UserLevel userLevel = this.userLevelService.addUserLevel(userLevelForm);
            user.setUserLevel(userLevel);
            // DepartmentManagement에 임시로 Name, Description 값 추가
            DepartmentManagementForm departmentManagementForm = new DepartmentManagementForm();
            departmentManagementForm.setDepartmentName("개발팀");
            departmentManagementForm.setDepartmentDescription("웹사이트 및 앱 서비스 개발");
            DepartmentManagement departmentManagement = this.departmentManagementService.addDepartment(departmentManagementForm);
            user.setDepartmentId(departmentManagement);
            if(primaryWorkspace == null || primaryWorkspace.getName() != userForm.getWorkspaceName()) {
                //  업무 공간를 생성한다. 가입한 사용자는 업무 공간의 주인이다.
@@ -234,18 +263,17 @@
                user.setLastWorkspaceId(workspace.getId());
                // edit by zenith for permission at 20200803
                user.setPermission(MngPermission.makeAllPermission());
                //user.setPermission(MngPermission.makeAllPermission());
            } else  {
                this.userInviteService.includePrimaryWorkspace(user, primaryWorkspace);
                user.setLastWorkspaceId(primaryWorkspace.getId());
                user.setPermission(MngPermission.makeSubAllPermission());
                /*user.setPermission(MngPermission.makeSubAllPermission());*/
            }
        }
        this.userRepository.saveAndFlush(user);
        //  이메일 알림 예정 시간이 공백이면 디폴트 이메일 알림 예정 시간으로 설정한다.
        user.setReservationNotifyTime(User.DEFAULT_RESERVATION_NOTIFY_TIME);
        this.userRepository.saveAndFlush(user);
        //  초대받은 메일이 있는 사용자가 가입했으면 초대했을 때 선택한 프로젝트에 참여 시킨다.
        this.userInviteService.checkInviteUser(user);
@@ -1005,7 +1033,7 @@
        this.userRepository.saveAndFlush(user);
    }
        //  마지막으로 선택한 프로젝트 정보를 저장한다.
    //  마지막으로 선택한 프로젝트 정보를 저장한다.
    @Override
    @Transactional
    public void updateLastProject(Map<String, Object> resJsonData, UserForm userForm) {
@@ -1150,6 +1178,7 @@
        }
    }
    //  업무 공간에서 제외되거나 업무 공간 삭제시 참여 사용자들의 마지막 접근 업무 공간 정보로 세션 업데이트하기 위해 사용
    @Override
    @Transactional(readOnly = true)
@@ -1164,7 +1193,9 @@
    @Transactional(readOnly = true)
    public User getUserSession(Map<String, Object> resJsonData, HttpServletRequest httpServletRequest) {
        User user = this.getUser(this.webAppUtil.getLoginId());
        UserVo userVo = ConvertUtil.copyProperties(user, UserVo.class, "password");
        UserVo userVo = ConvertUtil.copyProperties(user, UserVo.class, "password", "permission");
        // user에서 Permission 값을 가져와서 userVo 에 setPermission 함
        userVo.setPermission(user.getPermission());
        userVo.setAccount(CommonUtil.decryptAES128(userVo.getAccount()));
        resJsonData.put(Constants.RES_KEY_CONTENTS, userVo);
        //  사용자 세션 정보를 분석해서 로그에 남긴다.