Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit a66c6ed

Browse files
signing-up-in-with-facebook-coded
1 parent f0b2239 commit a66c6ed

File tree

5 files changed

+48
-3
lines changed

5 files changed

+48
-3
lines changed

‎src/main/java/com/naturalprogrammer/spring/socialsample/users/SignUpController.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
import org.apache.commons.logging.Log;
66
import org.apache.commons.logging.LogFactory;
77
import org.springframework.beans.factory.annotation.Autowired;
8+
import org.springframework.social.connect.Connection;
9+
import org.springframework.social.connect.web.ProviderSignInUtils;
810
import org.springframework.stereotype.Controller;
911
import org.springframework.ui.Model;
1012
import org.springframework.validation.BindingResult;
@@ -25,12 +27,15 @@ public class SignUpController {
2527

2628
private SignupFormValidator signupFormValidator;
2729
private UserService userService;
30+
private ProviderSignInUtils providerSignInUtils;
2831

2932
@Autowired
3033
public SignUpController(UserService userService,
31-
SignupFormValidator signupFormValidator) {
34+
SignupFormValidator signupFormValidator,
35+
ProviderSignInUtils providerSignInUtils) {
3236
this.userService = userService;
3337
this.signupFormValidator = signupFormValidator;
38+
this.providerSignInUtils = providerSignInUtils;
3439
}
3540

3641
@InitBinder("signupForm")
@@ -41,7 +46,8 @@ protected void initSignupBinder(WebDataBinder binder) {
4146
@RequestMapping(value = "/signup", method = RequestMethod.GET)
4247
public String signup(Model model, WebRequest request) {
4348

44-
model.addAttribute(new SignupForm());
49+
Connection<?> connection = providerSignInUtils.getConnectionFromSession(request);
50+
model.addAttribute(SignupForm.fromConnection(connection));
4551
return "signup";
4652

4753
}
@@ -53,7 +59,9 @@ public String signup(@ModelAttribute("signupForm") @Valid SignupForm signupForm,
5359
if (result.hasErrors())
5460
return "signup";
5561

56-
userService.signup(signupForm);
62+
User user = userService.signup(signupForm);
63+
providerSignInUtils.doPostSignUp(user.getEmail(), request);
64+
5765
MyUtil.flash(redirectAttributes, "success", "signupSuccess");
5866

5967
return "redirect:/";

‎src/main/java/com/naturalprogrammer/spring/socialsample/users/SignupForm.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import javax.validation.constraints.Size;
55

66
import org.hibernate.validator.constraints.Email;
7+
import org.springframework.social.connect.Connection;
8+
import org.springframework.social.connect.UserProfile;
79

810
public class SignupForm {
911

@@ -45,4 +47,17 @@ public String toString() {
4547
+ password + "]";
4648
}
4749

50+
public static SignupForm fromConnection(Connection<?> connection) {
51+
52+
SignupForm form = new SignupForm();
53+
54+
if (connection != null) {
55+
UserProfile socialMediaProfile = connection.fetchUserProfile();
56+
form.setEmail(socialMediaProfile.getEmail());
57+
form.setName(socialMediaProfile.getFirstName() + " " + socialMediaProfile.getLastName());
58+
}
59+
60+
return form;
61+
}
62+
4863
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.naturalprogrammer.spring.socialsample.util;
2+
3+
import org.springframework.web.bind.annotation.ControllerAdvice;
4+
import org.springframework.web.bind.annotation.ModelAttribute;
5+
6+
@ControllerAdvice
7+
public class MyControllerAdvice {
8+
9+
public static final String FACEBOOK_SCOPE = "read_stream,email,user_friends,user_about_me,user_actions.books";
10+
11+
@ModelAttribute("facebookScope")
12+
public String getFacebookScope() {
13+
return FACEBOOK_SCOPE;
14+
}
15+
16+
}

‎src/main/webapp/WEB-INF/jsp/includes/header.jsp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,11 @@
6363
<sec:authorize access="isAnonymous()">
6464

6565
<li><a href="<c:url value='/signup' />"><span class="glyphicon glyphicon-list-alt"></span> Sign up</a></li>
66+
<li>
67+
<a href="/auth/facebook?scope=${facebookScope}">
68+
<span class="glyphicon glyphicon-globe"></span> Facebook Sign Up
69+
</a>
70+
</li>
6671
<li>
6772
<a href="/signin">Sign in <span class="glyphicon glyphicon-log-in"></span></a>
6873
</li>

‎src/main/webapp/WEB-INF/jsp/signin.jsp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636

3737
<button type="submit" class="btn btn-primary">Sign In</button>
3838
<a class="btn btn-default" href="/forgot-password">Forgot Password</a>
39+
<a class="btn btn-default" href="/auth/facebook?scope=${facebookScope}">Facebook Sign In</a>
3940
</form:form>
4041
</div>
4142
</div>

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /