-
Notifications
You must be signed in to change notification settings - Fork 4
/
SNSLoginController.java
106 lines (81 loc) · 3.67 KB
/
SNSLoginController.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
package com.mogotco.controller;
import java.util.Map;
import javax.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import com.mogotco.dto.UserDTO;
import com.mogotco.service.GithubloginAPI;
import com.mogotco.service.KakaologinAPI;
import com.mogotco.service.UserService;
@Controller
@RequestMapping("/user")
public class SNSLoginController {
String dir = "user/";
@Autowired
UserService user_service;
@Autowired
KakaologinAPI kakao_service;
@Autowired
GithubloginAPI github_service;
//카카오 로그인
@RequestMapping("/kakaologin")
public Object kakaologin(Model model, String code, HttpSession session) throws Exception {
// 테스트 페이지
// model.addAttribute("center", dir+"kakaologin");
// System.out.println("code inga controller = " + code);
// 받아온 인가코드를 다시 보내 엑세스 토큰을 받아옴
String accessToken = kakao_service.getAccessToken(code);
// System.out.println("code accesstoken controller = " + accessToken);
// 엑세스 토큰을 이용해 유저의 정보를 얻어옴
Map<String, Object> userInfo = kakao_service.getUserInfo(accessToken);
// System.out.println("code userInfo controller = " + userInfo);
// 추출된 유저정보를 string으로 형 변환
String kakaoid = (String) userInfo.get("id");
String userbirth = (String) userInfo.get("birthday");
String usergen = (String) userInfo.get("gender");
String userid = (String) userInfo.get("email");
String username = (String) userInfo.get("nickname");
String profile_image = (String) userInfo.get("profile_image");
// userid(카카오 이메일) 조회 후 null 값이면 새로운 user로 회원가입
UserDTO user = null;
user = user_service.get(userid);
if (user == null) {
UserDTO newuser = new UserDTO(userid, null, username, null, null, null, null, 0, null, 0, null, kakaoid, null, null, null, null, null, null, null,null, 0);
user_service.register(newuser);
session.setAttribute("loginuser", newuser);
} else {
session.setAttribute("loginuser", user);
}
return "redirect:mypage?userid="+user.getUserid();
}
// 깃허브 로그인
@RequestMapping("/githublogin")
public String githublogin(Model model, String code, HttpSession session) throws Exception {
// 테스트 페이지
// model.addAttribute("center", dir+"githublogin");
// System.out.println("code inga controller = " + code);
// 받아온 인가코드를 다시 보내 엑세스 토큰을 받아옴
String accessToken = github_service.getAccessToken(code);
// System.out.println("code accesstoken controller = " + accessToken);
// 엑세스 토큰을 이용해 유저의 정보를 얻어옴
Map<String, Object> userInfo = github_service.getUserInfo(accessToken);
// System.out.println("code userInfo controller = " + userInfo);
// 추출된 유저정보를 string으로 형 변환
String naverid = (String) userInfo.get("id");
String userid = (String) userInfo.get("login");
String snsgit = (String) userInfo.get("git");
// userid(github 닉네임) 조회 후 null 값이면 새로운 user로 회원가입
UserDTO user = null;
user = user_service.get(userid);
if (user == null) {
UserDTO newuser = new UserDTO(userid, null, null, null, null, null, null, 0, null, 0, naverid, null, null, null, null, null, null, null, snsgit,null, 0);
user_service.register(newuser);
session.setAttribute("loginuser", newuser);
} else {
session.setAttribute("loginuser", user);
}
return "redirect:mypage?userid="+user.getUserid();
}
}