Ver código fonte

added GitHub & Facebook login, fixed profile issues

Akira Laine 9 anos atrás
pai
commit
1bba53dc28

+ 2 - 1
app/.meteor/packages

@@ -31,4 +31,5 @@ emojione:emojione
 utilities:avatar
 matb33:collection-hooks
 aldeed:collection2
-materialize:materialize
+materialize:materialize
+accounts-facebook

+ 2 - 0
app/.meteor/versions

@@ -1,4 +1,5 @@
 accounts-base@1.2.2
+accounts-facebook@1.0.6
 accounts-github@1.0.6
 accounts-oauth@1.1.8
 accounts-password@1.1.4
@@ -32,6 +33,7 @@ ejson@1.0.7
 email@1.0.8
 emojione:emojione@1.5.2
 es5-shim@4.1.14
+facebook@1.2.2
 fastclick@1.0.7
 geojson-utils@1.0.4
 github@1.1.4

+ 12 - 0
app/client/scripts/events.js

@@ -265,6 +265,12 @@ Template.login.events({
         Meteor.loginWithGithub({loginStyle: "redirect"}, function(err, res) {
             console.log(err, res);
         });
+    },
+
+    "click #facebook-login": function(){
+        Meteor.loginWithFacebook(function(err, res) {
+            console.log(err, res);
+        });
     }
 });
 
@@ -563,6 +569,12 @@ Template.register.events({
         Meteor.loginWithGithub({loginStyle: "redirect"}, function(err, res) {
             console.log(err, res);
         });
+    },
+
+    "click #facebook-login": function(){
+        Meteor.loginWithFacebook({loginStyle: "redirect"}, function(err, res) {
+            console.log(err, res);
+        });
     }
 });
 

+ 4 - 0
app/client/stylesheets/app.css

@@ -62,3 +62,7 @@ main {
 .register{
     margin: 10px 0 0 0px;
 }
+
+.social{
+    margin: 10px 0 0 10px;
+}

+ 3 - 3
app/client/templates/header.html

@@ -12,7 +12,7 @@
         </ul>
         <ul id="accountDrop" class="dropdown-content">
             {{#if currentUser}}
-                <li><a href="/u/{{currentUser.username}}">Profile</a></li>
+                <li><a href="/u/{{currentUser.profile.username}}">Profile</a></li>
                 <li><a href="/settings">Settings</a></li>
                 <li class="divider"></li>
                 <li class="logout"><a>Logout</a></li>
@@ -33,7 +33,7 @@
                             class="material-icons right">arrow_drop_down</i></a></li>
                     <li><a class="dropdown-button" href="#!" data-activates="accountDrop">
                         {{#if currentUser}}
-                            {{currentUser.username}}
+                            {{currentUser.profile.username}}
                         {{else}}
                             Account
                         {{/if}}
@@ -66,7 +66,7 @@
                         <li>
                             <div class="collapsible-header black-text"><i class="material-icons">arrow_drop_down</i>
                                 {{#if currentUser}}
-                                    {{currentUser.username}}
+                                    {{currentUser.profile.username}}
                                 {{else}}
                                     Account
                                 {{/if}}

+ 2 - 0
app/client/templates/login.html

@@ -20,6 +20,8 @@
                     <i class="material-icons right">send</i>
                 </button>
             </form>
+            <button id="facebook-login" class="btn waves-effect waves-light blue darken-4 social">Login With Facebook</button>
+            <button id="github-login" class="btn waves-effect waves-light grey social">Login With GitHub</button>
         </div>
     </main>
     {{> footer}}

+ 2 - 0
app/client/templates/register.html

@@ -25,6 +25,8 @@
                     <i class="material-icons right">send</i>
                 </button>
             </form>
+            <button id="facebook-login" class="btn waves-effect waves-light blue darken-4 social">Login With Facebook</button>
+            <button id="github-login" class="btn waves-effect waves-light grey social">Login With GitHub</button>
         </div>
     </main>
     {{> footer}}

+ 1 - 1
app/database/schemas.js

@@ -267,7 +267,7 @@ Schemas.UserProfile = new SimpleSchema({
         type: String,
         label: "Username",
         regEx: /^[a-zA-Z0-9_]+$/,
-        min: 6,
+        min: 4,
         max: 26
     },
     usernameL: {

+ 11 - 1
app/server/server.js

@@ -1165,5 +1165,15 @@ Meteor.setInterval(function () {
 }, 10000);
 
 Meteor.users.after.insert(function (err, user) {
-    Accounts.sendVerificationEmail(user._id);
+    if(user.emails) {
+        Accounts.sendVerificationEmail(user._id);
+    }
+    else if(user.services.facebook.email){
+        Meteor.users.update({"profile.username": user.profile.username}, {$set: {emails: [{"address": user.services.facebook.email, "verified": false}]}})
+        Accounts.sendVerificationEmail(user._id);
+    }
+    else if(user.services.github.email){
+        Meteor.users.update({"profile.username": user.profile.username}, {$set: {emails: [{"address": user.services.github.email, "verified": false}]}})
+        Accounts.sendVerificationEmail(user._id, user.services.github.email);
+    }
 });