|
@@ -1,14 +1,18 @@
|
|
|
package seecoder.devcloud.web.service.impl.user;
|
|
package seecoder.devcloud.web.service.impl.user;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+import com.nju.edu.gitlab.SeecoderGitlabApi;
|
|
|
|
|
+import com.nju.edu.gitlab.SeecoderGitlabException;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
-import org.springframework.security.core.context.SecurityContextHolder;
|
|
|
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.security.core.userdetails.UserDetails;
|
|
import org.springframework.security.core.userdetails.UserDetails;
|
|
|
import org.springframework.security.core.userdetails.UserDetailsService;
|
|
import org.springframework.security.core.userdetails.UserDetailsService;
|
|
|
import org.springframework.security.core.userdetails.UsernameNotFoundException;
|
|
import org.springframework.security.core.userdetails.UsernameNotFoundException;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
-
|
|
|
|
|
|
|
+import seecoder.devcloud.common.exceptions.ServiceException;
|
|
|
|
|
+import seecoder.devcloud.web.dao.user.UserMapper;
|
|
|
import seecoder.devcloud.web.model.po.user.UserPO;
|
|
import seecoder.devcloud.web.model.po.user.UserPO;
|
|
|
|
|
+import seecoder.devcloud.web.model.vo.user.GitlabUserCreateVO;
|
|
|
import seecoder.devcloud.web.model.vo.user.UserVO;
|
|
import seecoder.devcloud.web.model.vo.user.UserVO;
|
|
|
import seecoder.devcloud.web.service.user.UserService;
|
|
import seecoder.devcloud.web.service.user.UserService;
|
|
|
|
|
|
|
@@ -16,9 +20,40 @@ import seecoder.devcloud.web.service.user.UserService;
|
|
|
@Slf4j
|
|
@Slf4j
|
|
|
public class UserServiceImpl implements UserService, UserDetailsService {
|
|
public class UserServiceImpl implements UserService, UserDetailsService {
|
|
|
|
|
|
|
|
|
|
+ private final UserMapper userMapper;
|
|
|
|
|
+
|
|
|
|
|
+ private final SeecoderGitlabApi seecoderGitlabApi;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ public UserServiceImpl(UserMapper userMapper, SeecoderGitlabApi seecoderGitlabApi) {
|
|
|
|
|
+ this.userMapper = userMapper;
|
|
|
|
|
+ this.seecoderGitlabApi = seecoderGitlabApi;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public UserVO createGitlabUser(GitlabUserCreateVO vo) throws ServiceException {
|
|
|
|
|
+ try {
|
|
|
|
|
+ seecoderGitlabApi.createGitlabUser(vo.getUsername(),vo.getPassword(),vo.getEmail());
|
|
|
|
|
+ } catch (SeecoderGitlabException e) {
|
|
|
|
|
+ throw new ServiceException("创建gitlab用户失败",e);
|
|
|
|
|
+ }
|
|
|
|
|
+ UserPO loginUser = UserService.loginUser();
|
|
|
|
|
+ loginUser.setWithGitlab(true);
|
|
|
|
|
+ userMapper.updateUser(loginUser);
|
|
|
|
|
+ return new UserVO(loginUser);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
@Override
|
|
@Override
|
|
|
public UserVO getLoginUser(){
|
|
public UserVO getLoginUser(){
|
|
|
- UserPO loginUser = (UserPO) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
|
|
|
|
|
|
|
+ //注意登陆用户没有同步withGitlab字段
|
|
|
|
|
+ UserPO loginUser = UserService.loginUser();
|
|
|
|
|
+ //todo 查gitlab账户存在吗
|
|
|
|
|
+ UserPO userPO = userMapper.select(loginUser.getId());
|
|
|
|
|
+ if (null == userPO){
|
|
|
|
|
+ userMapper.insert(loginUser);
|
|
|
|
|
+ } else if (!userPO.equals(loginUser)){
|
|
|
|
|
+ userMapper.updateUser(loginUser);
|
|
|
|
|
+ }
|
|
|
return new UserVO(loginUser);
|
|
return new UserVO(loginUser);
|
|
|
}
|
|
}
|
|
|
|
|
|