Sotaro KARASAWA 9 лет назад
Родитель
Сommit
db94ca9954

+ 0 - 18
lib/crowi/express-init.js

@@ -18,7 +18,6 @@ module.exports = function(crowi, app) {
 
   app.use(function(req, res, next) {
     var now = new Date()
-      , fbparams = {}
       , baseUrl
       , config = crowi.getConfig()
       , tzoffset = -(config.crowi['app:timezone'] || 9) * 60 // for datez
@@ -40,7 +39,6 @@ module.exports = function(crowi, app) {
     res.locals.env      = env;
     res.locals.now      = now;
     res.locals.tzoffset = tzoffset;
-    res.locals.facebook = {appId: config.crowi['facebook:appId'] || ''};
     res.locals.consts   = {
         pageGrants: Page.getGrantLabels(),
         userStatus: User.getUserStatusLabels(),
@@ -63,22 +61,6 @@ module.exports = function(crowi, app) {
     }
   });
 
-  // Register Facebook middleware
-  app.use(function(req, res, next) {
-    var config = crowi.getConfig()
-      , facebook = require('facebook-node-sdk')
-      ;
-
-    if (config.crowi['facebook:appId'] && config.crowi['facebook:secret']) {
-      return facebook.middleware({
-        appId: config.crowi['facebook:appId'],
-        secret: config.crowi['facebook:secret']
-      })(req, res, next);
-    } else {
-      return next();
-    }
-  });
-
   app.set('port', crowi.port);
   app.use(express.static(crowi.publicDir));
   app.engine('html', cons.swig);

+ 0 - 10
lib/form/admin/fb.js

@@ -1,10 +0,0 @@
-'use strict';
-
-var form = require('express-form')
-  , field = form.field;
-
-module.exports = form(
-  field('settingForm[facebook:appId]').trim().is(/^\d+$/),
-  field('settingForm[facebook:secret]').trim().is(/^[\da-z]+$/)
-);
-

+ 0 - 1
lib/form/index.js

@@ -14,7 +14,6 @@ exports.admin = {
   mail: require('./admin/mail'),
   aws: require('./admin/aws'),
   google: require('./admin/google'),
-  fb: require('./admin/fb'),
   userInvite: require('./admin/userInvite'),
   slackSetting: require('./admin/slackSetting'),
 };

+ 0 - 1
lib/form/register.js

@@ -8,6 +8,5 @@ module.exports = form(
   field('registerForm.name').required(),
   field('registerForm.email').required(),
   field('registerForm.password').required().is(/^[\x20-\x7F]{6,40}$/),
-  field('registerForm.fbId').isInt(),
   field('registerForm.googleId').isInt()
 );

+ 1 - 1
lib/models/comment.js

@@ -2,7 +2,7 @@ module.exports = function(crowi) {
   var debug = require('debug')('crowi:models:comment')
     , mongoose = require('mongoose')
     , ObjectId = mongoose.Schema.Types.ObjectId
-    , USER_PUBLIC_FIELDS = '_id fbId image googleId name username email status createdAt' // TODO: どこか別の場所へ...
+    , USER_PUBLIC_FIELDS = '_id image googleId name username email status createdAt' // TODO: どこか別の場所へ...
     , commentSchema
   ;
 

+ 0 - 2
lib/models/config.js

@@ -42,8 +42,6 @@ module.exports = function(crowi) {
       'google:clientId'     : '',
       'google:clientSecret' : '',
 
-      'facebook:appId'  : '',
-      'facebook:secret' : '',
     };
   }
 

+ 2 - 43
lib/models/user.js

@@ -11,7 +11,7 @@ module.exports = function(crowi) {
     , STATUS_SUSPENDED  = 3
     , STATUS_DELETED    = 4
     , STATUS_INVITED    = 5
-    , USER_PUBLIC_FIELDS = '_id fbId image googleId name username email status createdAt' // TODO: どこか別の場所へ...
+    , USER_PUBLIC_FIELDS = '_id image googleId name username email status createdAt' // TODO: どこか別の場所へ...
 
     , PAGE_ITEMS        = 20
 
@@ -21,7 +21,6 @@ module.exports = function(crowi) {
 
   userSchema = new mongoose.Schema({
     userId: String,
-    fbId: String, // userId
     image: String,
     googleId: String,
     name: { type: String },
@@ -137,17 +136,6 @@ module.exports = function(crowi) {
     return this.updateImage(null, callback);
   };
 
-  userSchema.methods.updateFacebookId = function(fbId, callback) {
-    this.fbId = this.userId = fbId;
-    this.save(function(err, userData) {
-      return callback(err, userData);
-    });
-  };
-
-  userSchema.methods.deleteFacebookId = function(callback) {
-    return this.updateFacebookId(null, callback);
-  };
-
   userSchema.methods.updateGoogleId = function(googleId, callback) {
     this.googleId = googleId;
     this.save(function(err, userData) {
@@ -218,16 +206,14 @@ module.exports = function(crowi) {
     this.password = '';
     this.email = 'deleted@deleted';
     this.googleId = null;
-    this.fbId = null;
     this.image = null;
     this.save(function(err, userData) {
       return callback(err, userData);
     });
   };
 
-  userSchema.methods.updateGoogleIdAndFacebookId = function(googleId, facebookId, callback) {
+  userSchema.methods.updateGoogleId = function(googleId, callback) {
     this.googleId = googleId;
-    this.fbId = this.userId = facebookId;
     this.save(function(err, userData) {
       return callback(err, userData);
     });
@@ -367,12 +353,6 @@ module.exports = function(crowi) {
     });
   };
 
-  userSchema.statics.findUserByFacebookId = function(fbId, callback) {
-    this.findOne({userId: fbId}, function (err, userData) {
-      callback(err, userData);
-    });
-  };
-
   userSchema.statics.findUserByGoogleId = function(googleId, callback) {
     this.findOne({googleId: googleId}, function (err, userData) {
       callback(err, userData);
@@ -571,27 +551,6 @@ module.exports = function(crowi) {
     });
   };
 
-  userSchema.statics.createUserByFacebook = function(fbUserInfo, callback) {
-    var User = this
-      , newUser = new User();
-
-    newUser.userId = fbUserInfo.id;
-    newUser.image = '//graph.facebook.com/' + fbUserInfo.id + '/picture?size=square';
-    newUser.name = fbUserInfo.name || '';
-    newUser.username = fbUserInfo.username || '';
-    newUser.email = fbUserInfo.email || '';
-    newUser.createdAt = Date.now();
-    newUser.status = decideUserStatusOnRegistration();
-
-    newUser.save(function(err, userData) {
-      if (userData.status == STATUS_ACTIVE) {
-        userEvent.emit('activated', userData);
-      }
-      return callback(err, userData);
-    });
-  };
-
-
   userSchema.statics.createUserPictureFilePath = function(user, name) {
     var ext = '.' + name.match(/(.*)(?:\.([^.]+$))/)[2];
 

+ 0 - 3
lib/routes/index.js

@@ -34,7 +34,6 @@ module.exports = function(crowi, app) {
   app.post('/register/google'        , login.registerGoogle);
   app.get('/google/callback'         , login.googleCallback);
   app.get('/login/google'            , login.loginGoogle);
-  app.get('/login/facebook'          , login.loginFacebook);
   app.get('/logout'                  , logout.logout);
 
   app.get('/admin'                      , loginRequired(crowi, app) , middleware.adminRequired() , admin.index);
@@ -44,7 +43,6 @@ module.exports = function(crowi, app) {
   app.post('/_api/admin/settings/mail'  , loginRequired(crowi, app) , middleware.adminRequired() , csrf, form.admin.mail, admin.api.appSetting);
   app.post('/_api/admin/settings/aws'   , loginRequired(crowi, app) , middleware.adminRequired() , csrf, form.admin.aws, admin.api.appSetting);
   app.post('/_api/admin/settings/google', loginRequired(crowi, app) , middleware.adminRequired() , csrf, form.admin.google, admin.api.appSetting);
-  app.post('/_api/admin/settings/fb'    , loginRequired(crowi, app) , middleware.adminRequired() , csrf, form.admin.fb , admin.api.appSetting);
 
   // search admin
   app.get('/admin/search'              , loginRequired(crowi, app) , middleware.adminRequired() , admin.search.index);
@@ -73,7 +71,6 @@ module.exports = function(crowi, app) {
   app.post('/me/password'             , form.me.password          , loginRequired(crowi, app) , me.password);
   app.post('/me/apiToken'             , form.me.apiToken          , loginRequired(crowi, app) , me.apiToken);
   app.post('/me/picture/delete'       , loginRequired(crowi, app) , me.deletePicture);
-  app.post('/me/auth/facebook'        , loginRequired(crowi, app) , me.authFacebook);
   app.post('/me/auth/google'          , loginRequired(crowi, app) , me.authGoogle);
   app.get( '/me/auth/google/callback' , loginRequired(crowi, app) , me.authGoogleCallback);
 

+ 2 - 23
lib/routes/login.js

@@ -116,26 +116,6 @@ module.exports = function(crowi, app) {
     }
   };
 
-  actions.loginFacebook = function(req, res) {
-    var facebook = req.facebook;
-
-    facebook.getUser(function(err, fbId) {
-      if (err || !fbId) {
-        req.user = req.session.user = false;
-        return res.redirect('/login');
-      }
-
-      User.findUserByFacebookId(fbId, function(err, userData) {
-        debug('on login findUserByFacebookId', err, userData);
-        if (userData) {
-          return loginSuccess(req, res, userData);
-        } else {
-          return loginFailure(req, res);
-        }
-      });
-    });
-  };
-
   actions.register = function(req, res) {
     var googleAuth = require('../util/googleAuth')(config);
 
@@ -156,7 +136,6 @@ module.exports = function(crowi, app) {
       var username = registerForm.username;
       var email = registerForm.email;
       var password = registerForm.password;
-      var facebookId = registerForm.fbId || null;
       var googleId = registerForm.googleId || null;
 
       // email と username の unique チェックする
@@ -219,8 +198,8 @@ module.exports = function(crowi, app) {
               });
             }
 
-            if (facebookId || googleId) {
-              userData.updateGoogleIdAndFacebookId(googleId, facebookId, function(err, userData) {
+            if (googleId) {
+              userData.updateGoogleId(googleId, function(err, userData) {
                 if (err) { // TODO
                 }
                 return loginSuccess(req, res, userData);

+ 0 - 4
lib/routes/logout.js

@@ -2,10 +2,6 @@ module.exports = function(crowi, app) {
   return {
     logout: function(req, res) {
 
-      if (req.facebook) {
-        req.facebook.destroySession();
-      }
-
       req.session.destroy();
       return res.redirect('/');
     }

+ 0 - 24
lib/routes/me.js

@@ -243,29 +243,5 @@ module.exports = function(crowi, app) {
     });
   };
 
-
-  actions.authFacebook = function(req, res) {
-    var userData = req.user;
-
-    var toDisconnect = req.body.disconnectFacebook ? true : false;
-    var fbId = req.body.fbId || 0;
-
-    if (toDisconnect) {
-      userData.deleteFacebookId(function(err, userData) {
-        req.flash('successMessage', 'Facebookコネクトを解除しました。');
-
-        return res.redirect('/me');
-      });
-    } else if (fbId) {
-      userData.updateFacebookId(fbId, function(err, userData) {
-        req.flash('successMessage', 'Facebookコネクトを設定しました。');
-
-        return res.redirect('/me');
-      });
-    } else {
-      return res.redirect('/me');
-    }
-  };
-
   return actions;
 };

+ 0 - 3
lib/util/middlewares.js

@@ -132,11 +132,8 @@ exports.swigFilters = function(app, swig) {
         return '';
       }
 
-      user.fbId = user.userId; // migration
       if (user.image && user.image != '/images/userpicture.png') {
         return user.image;
-      } else if (user.fbId) {
-        return '//graph.facebook.com/' + user.fbId + '/picture?size=square';
       } else {
         return '/images/userpicture.png';
       }

+ 0 - 5
lib/util/swigFunctions.js

@@ -10,11 +10,6 @@ module.exports = function(crowi, app, req, locals) {
     return req.csrfToken;
   };
 
-  locals.facebookLoginEnabled = function() {
-    var config = crowi.getConfig()
-    return config.crowi['facebook:appId'] && config.crowi['facebook:secret'];
-  };
-
   locals.googleLoginEnabled = function() {
     var config = crowi.getConfig()
     return config.crowi['google:clientId'] && config.crowi['google:clientSecret'];

+ 1 - 29
lib/views/admin/app.html

@@ -237,41 +237,13 @@
       </fieldset>
       </form>
 
-      <form action="/_api/admin/settings/fb" method="post" class="form-horizontal" id="fbSettingForm" role="form">
-      <fieldset>
-      <legend>Facebook 設定</legend>
-        <p class="well">Facebook アプリケーションの設定をすると、Facebook にコネクトして登録やログインが可能になります。</p>
-
-        <div class="form-group">
-          <label for="settingForm[facebook:appId]" class="col-xs-3 control-label">facebook ID</label>
-          <div class="col-xs-6">
-            <input class="form-control" type="text" name="settingForm[facebook:appId]" value="{{ settingForm['facebook:appId'] }}">
-          </div>
-        </div>
-
-        <div class="form-group">
-          <label for="settingForm[facebook:secret]" class="col-xs-3 control-label">Secret</label>
-          <div class="col-xs-6">
-            <input class="form-control" type="text" name="settingForm[facebook:secret]" value="{{ settingForm['facebook:secret'] }}">
-          </div>
-        </div>
-
-        <div class="form-group">
-          <div class="col-xs-offset-3 col-xs-6">
-            <input type="hidden" name="_csrf" value="{{ _csrf() }}">
-            <button type="submit" class="btn btn-primary">更新</button>
-          </div>
-        </div>
-
-      </fieldset>
-      </form>
     </div>
   </div>
 
   <script>
     $(function()
     {
-      $('#appSettingForm, #secSettingForm, #mailSettingForm, #awsSettingForm, #googleSettingForm, #fbSettingForm').each(function() {
+      $('#appSettingForm, #secSettingForm, #mailSettingForm, #awsSettingForm, #googleSettingForm').each(function() {
         $(this).submit(function()
         {
           function showMessage(formId, msg, status) {

+ 0 - 19
lib/views/layout/layout.html

@@ -23,25 +23,6 @@
   data-me="{{ user._id.toString() }}"
  {% block html_base_attr %}{% endblock %}
  >
-<div id="fb-root"></div>
-<script>
-  window.fbAsyncInit = function() {
-    FB.init({
-      appId      : '{{ facebook.appId }}', // App ID
-      //channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.html', // Channel File
-      status     : true, // check login status
-      cookie     : true, // enable cookies to allow the server to access the session
-      xfbml      : true  // parse XFBML
-    });
-  };
-
-  (function(d){
-     var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
-     js = d.createElement('script'); js.id = id; js.async = true;
-     js.src = "//connect.facebook.net/en_US/all.js";
-     d.getElementsByTagName('head')[0].appendChild(js);
-   }(document));
-</script>
 
 {% block layout_head_nav %}
 <nav class="crowi-header navbar navbar-default" role="navigation">

+ 0 - 18
lib/views/login.html

@@ -65,15 +65,6 @@
         </form>
       </div>
       {% endif %}
-      {% if facebookLoginEnabled() %}
-      <div class="col-md-6">
-        <p>Facebook でログイン</p>
-        <form role="form">
-          <input type="hidden" name="_csrf" value="{{ _csrf() }}">
-          <button type="button" id="btn-login-facebook" class="btn btn-block btn-facebook"><i class="fa fa-facebook-square"></i> Login</button>
-        </form>
-      </div>
-      {% endif %}
     </div>
 
     {% if config.crowi['security:registrationMode'] != 'Closed' %}
@@ -122,7 +113,6 @@
     </div>
 
     <form role="form" method="post" action="/register" id="register-form">
-      <input type="hidden" class="form-control" name="registerForm[fbId]" value="{{ req.body.registerForm.fbId }}">
       <input type="hidden" class="form-control" name="registerForm[googleId]" value="{{ googleId|default(req.body.registerForm.googleId) }}">
 
       <label>ユーザーID</label>
@@ -182,14 +172,6 @@
         </form>
       </div>
       {% endif %}
-      {% if facebookLoginEnabled() %}
-      <div class="col-md-6">
-        <p>Facebook で登録</p>
-        <form role="form">
-          <button type="button" id="btn-register-facebook" class="btn btn-block btn-facebook"><i class="fa fa-facebook-square"></i> Login</button>
-        </form>
-      </div>
-      {% endif %}
     </div>
 
     <p class="bottom-text"><a href="#login" id="login"><i class="fa fa-sign-out"></i> ログインはこちら</a></p>

+ 0 - 72
lib/views/me/index.html

@@ -110,8 +110,6 @@
             <form action="/me/picture/delete" method="post" class="form-horizontal" role="form" onsubmit="return window.confirm('削除してよろしいですか?');">
               <button type="submit" class="btn btn-danger">画像を削除</button>
             </form>
-            {% elseif user.fbId %}
-            プロフィール画像はFacebookから自動的に設定されています。
             {% endif %}
             </p>
           </div>
@@ -173,76 +171,6 @@
     </script>
 
   <div class="row">
-    {% if facebookLoginEnabled() %}
-    <div class="col-sm-6"> {# Facebook Connect #}
-
-      <div class="form-box">
-        <form action="/me/auth/facebook" method="post" class="form-horizontal" role="form" id="auth-connect-facebook">
-          <fieldset>
-            <legend><i class="fa fa-facebook-square"></i> Facebook設定</legend>
-
-          {% if user.userId %}
-
-          <div class="form-group">
-            <div class="col-sm-12">
-              <p>
-                <a href="//www.facebook.com/{{ user.userId }}"><img src="//graph.facebook.com/{{ user.userId }}/picture?size=square" width="32"> </a>
-                <input type="submit" name="disconnectFacebook" class="btn btn-default" value="接続を解除">
-              </p>
-              <p class="help-block">
-              接続を解除すると、Facebookを利用してのログインができなくなります。<br>
-              解除後はメールアドレスとパスワードでログインすることができます。
-              </p>
-            </div>
-          </div>
-
-          {% else %}
-
-          <div class="form-group">
-            <div class="col-sm-12">
-              <div class="text-center">
-                <input type="hidden" class="form-control" name="fbId">
-                <button type="submit" id="btn-connect-facebook" class="btn btn-facebook">Facebookコネクト</button>
-                <script>
-                  $('#btn-connect-facebook').click(function(e)
-                  {
-                    var afterLogin = function(response) {
-                      if (response.status !== 'connected') {
-                        // TODO
-                      } else {
-                        var authR = response.authResponse;
-                        $('#auth-connect-facebook input[name="fbId"]').val(authR.userID);
-                        $('#auth-connect-facebook').submit();
-                      }
-                    };
-                    FB.getLoginStatus(function(response) {
-                      if (response.status === 'connected') {
-                        afterLogin(response);
-                      } else {
-                        FB.login(function(response) {
-                          afterLogin(response);
-                        }, {scope: 'email'});
-                      }
-                    });
-
-                    return false;
-                  });
-                </script>
-              </div>
-              <p class="help-block">
-              Facebookコネクトをすると、Facebookでログイン可能になります。<br>
-              メールアドレスとパスワードでのログインは引き続きご利用いただけます。
-              </p>
-            </div>
-          </div>
-
-          {% endif %}
-          </div>
-        </fieldset>
-        </form>
-    </div> {# /Facebook Connect #}
-
-    {% endif %}
     {% if googleLoginEnabled() %}
 
     <div class="col-sm-6"> {# Google Connect #}

+ 0 - 1
lib/views/page.html

@@ -87,7 +87,6 @@
       <a href="#revision-body" data-toggle="tab">
       <i class="fa fa-magic"></i>
       {#
-        <img src="//graph.facebook.com/588883490/picture?size=square" width="16"> <i class="fa fa-arrow-right"></i> <img src="//graph.facebook.com/588883490/picture?size=square" width="16">
         <span class="label label-danger" style=""> 承認待ち</span>
       #}
       </a>

+ 0 - 1
package.json

@@ -57,7 +57,6 @@
     "express": "~4.13.3",
     "express-form": "~0.12.0",
     "express-session": "~1.12.0",
-    "facebook-node-sdk": "=0.1.10",
     "font-awesome": "~4.5.0",
     "googleapis": "=0.4.7",
     "gulp": "~3.9.0",

+ 0 - 7
resource/css/_layout.scss

@@ -152,13 +152,6 @@
 
   .login-dialog-container {
 
-    .facebook-info {
-      border-radius: 4px;
-      border: solid 1px #ccc;
-      padding: 10px;
-      margin-bottom: 15px;
-    }
-
     margin: 40px auto;
     float: none;
 

+ 0 - 4
resource/css/crowi.scss

@@ -271,10 +271,6 @@ footer {
 // buttons
 .btn-primary {
 }
-$btn-facebook-color: #4c66a4;
-.btn-facebook {
-  @include button-variant(lighten($btn-facebook-color, 50%), $btn-facebook-color, darken($btn-facebook-color, 20%));
-}
 $btn-google-color: rgb(204,89,71);
 .btn-google {
   @include button-variant(lighten($btn-google-color, 50%), $btn-google-color, darken($btn-google-color, 20%));

+ 0 - 3
resource/js/components/User/UserPicture.js

@@ -6,11 +6,8 @@ export default class UserPicture extends React.Component {
   getUserPicture(user) {
     // from swig.setFilter('picture', function(user)
 
-    user.fbId = user.userId; // migration
     if (user.image && user.image != '/images/userpicture.png') {
       return user.image;
-    } else if (user.fbId) {
-      return '//graph.facebook.com/' + user.fbId + '/picture?size=square';
     } else {
       return '/images/userpicture.png';
     }

+ 0 - 51
resource/js/crowi.js

@@ -139,8 +139,6 @@ Crowi.userPicture = function (user) {
 
   if (user.image && user.image != '/images/userpicture.png') {
     return user.image;
-  } else if (user.fbId) {
-    return '//graph.facebook.com/' + user.fbId + '/picture?size=square';
   } else {
     return '/images/userpicture.png';
   }
@@ -383,25 +381,6 @@ $(function() {
     $('#login-dialog').removeClass('to-flip');
     return false;
   });
-  $('#btn-login-facebook').click(function(e)
-  {
-    var afterLogin = function(response) {
-      if (response.status !== 'connected') {
-        $('#login-form-errors').html('<p class="alert alert-danger">Facebookでのログインに失敗しました。</p>');
-      } else {
-        location.href = '/login/facebook';
-      }
-    };
-    FB.getLoginStatus(function(response) {
-      if (response.status === 'connected') {
-        afterLogin(response);
-      } else {
-        FB.login(function(response) {
-          afterLogin(response);
-        }, {scope: 'email'});
-      }
-    });
-  });
 
   $('#register-form input[name="registerForm[username]"]').change(function(e) {
     var username = $(this).val();
@@ -416,36 +395,6 @@ $(function() {
     });
   });
 
-  $('#btn-register-facebook').click(function(e)
-  {
-    var afterLogin = function(response) {
-      if (response.status !== 'connected') {
-        $('#register-form-errors').html('<p class="alert alert-danger">Facebookでのログインに失敗しました。</p>');
-
-      } else {
-        var authR = response.authResponse;
-        $('#register-form input[name="registerForm[fbId]"]').val(authR.userID);
-        FB.api('/me?fields=name,username,email', function(res) {
-          $('#register-form input[name="registerForm[name]"]').val(res.name);
-          $('#register-form input[name="registerForm[username]"]').val(res.username || '');
-          $('#register-form input[name="registerForm[email]"]').val(res.email);
-
-          $('#register-form .facebook-info').remove();
-          $('#register-form').prepend('<div class="facebook-info"><img src="//graph.facebook.com/' + res.id + '/picture?size=square" width="25"> <i class="fa fa-facebook-square"></i> ' + res.name + 'さんとして登録します</div>');
-        });
-      }
-    };
-    FB.getLoginStatus(function(response) {
-      if (response.status === 'connected') {
-        afterLogin(response);
-      } else {
-        FB.login(function(response) {
-          afterLogin(response);
-        }, {scope: 'email'});
-      }
-    });
-  });
-
   if (pageId) {
 
     // if page exists