Explorar o código

WIP: impl /me/external-account/associate

Yuki Takei %!s(int64=8) %!d(string=hai) anos
pai
achega
46332b5b86

+ 2 - 0
lib/form/me/associate-external-account.js

@@ -4,4 +4,6 @@ var form = require('express-form')
   , field = form.field;
 
 module.exports = form(
+  field('loginForm.username').required(),
+  field('loginForm.password').required().is(/^[\x20-\x7F]{6,}$/)
 );

+ 6 - 3
lib/routes/index.js

@@ -106,12 +106,15 @@ module.exports = function(crowi, app) {
   app.post('/admin/users/external-accounts/:id/remove'   , loginRequired(crowi, app) , middleware.adminRequired() , admin.externalAccount.remove);
 
   app.get('/me'                       , loginRequired(crowi, app) , me.index);
-  app.get('/me/external-accounts'     , loginRequired(crowi, app) , me.externalAccounts.list);
   app.get('/me/password'              , loginRequired(crowi, app) , me.password);
   app.get('/me/apiToken'              , loginRequired(crowi, app) , me.apiToken);
   app.post('/me'                      , form.me.user              , loginRequired(crowi, app) , me.index);
-  app.post('/me/external-accounts/associate'    , form.me.associateExternalAccount , loginRequired(crowi, app) , me.externalAccounts.associate);
-  app.post('/me/external-accounts/disassociate' , loginRequired(crowi, app) , me.externalAccounts.disassociate);
+  // external-accounts
+  if (Config.isEnabledPassport(config)) {
+    app.get('/me/external-accounts'     , loginRequired(crowi, app) , me.externalAccounts.list);
+    app.post('/me/external-accounts/associate'    , form.me.associateExternalAccount , loginRequired(crowi, app) , me.externalAccounts.associate);
+    app.post('/me/external-accounts/disassociate' , loginRequired(crowi, app) , me.externalAccounts.disassociate);
+  }
   app.post('/me/password'             , form.me.password          , loginRequired(crowi, app) , me.password);
   app.post('/me/imagetype'            , form.me.imagetype         , loginRequired(crowi, app) , me.imagetype);
   app.post('/me/apiToken'             , form.me.apiToken          , loginRequired(crowi, app) , me.apiToken);

+ 14 - 2
lib/routes/me.js

@@ -179,10 +179,22 @@ module.exports = function(crowi, app) {
 
   actions.externalAccounts.associate = function(req, res) {
     const passport = require('passport');
+    const passportService = crowi.passportService;
 
-    let isSuccess = false;
+    if (!passportService.isLdapStrategySetup) {
+      debug('LdapStrategy has not been set up');
+      return next();
+    }
+
+    const loginForm = req.body.loginForm;
+
+    if (!req.form.isValid) {
+      debug("invalid form");
+      return res.render('login', {
+      });
+    }
 
-    console.log('associate');
+    console.log(loginForm);
 
     passport.authenticate('ldapauth', (err, user, info) => {
       console.log(err);

+ 6 - 8
lib/views/me/external-accounts.html

@@ -134,24 +134,22 @@
           <div id="form-box">
             <form action="/me/external-accounts/associate" method="post" class="form-horizontal" role="form">
             <fieldset>
-              <div class="form-group {% if not user.password %}has-error{% endif %}">
-                <label for="mePassword[newPassword]" class="col-xs-3 control-label">{{ t('New password') }}</label>
+              <div class="form-group">
+                <label for="username" class="col-xs-3 control-label">{{ t('Username') }}</label>
                 <div class="col-xs-6">
-                  <input class="form-control" type="password" name="mePassword[newPassword]">
+                  <input class="form-control" name="loginForm[username]">
                 </div>
               </div>
               <div class="form-group">
-                <label for="mePassword[newPasswordConfirm]" class="col-xs-3 control-label">{{ t('Re-enter new password') }}</label>
+                <label for="password" class="col-xs-3 control-label">{{ t('Password') }}</label>
                 <div class="col-xs-6">
-                  <input class="form-control col-xs-4" type="password" name="mePassword[newPasswordConfirm]">
-
-                  <p class="help-block">{{ t('page_register.form_help.password') }}</p>
+                  <input class="form-control col-xs-4" type="password" name="loginForm[password]">
                 </div>
               </div>
 
               <div class="form-group">
                 <div class="col-xs-offset-2 col-xs-10">
-                  <button type="submit" class="btn btn-primary">{{ t('Update') }}</button>
+                  <button type="submit" class="btn btn-primary">{{ t('Associate') }}</button>
                 </div>
               </div>