Emapic/emapic

View on GitHub
routes/auth/index.js

Summary

Maintainability
F
2 wks
Test Coverage

Function exports has 809 lines of code (exceeds 25 allowed). Consider refactoring.
Open

module.exports = function(app) {
    utils(app);

    var oauthConfig = nconf.get('app').oAuth;

Severity: Major
Found in routes/auth/index.js - About 4 days to fix

    File index.js has 826 lines of code (exceeds 250 allowed). Consider refactoring.
    Open

    var passport = require('passport'),
        LocalStrategy = require('passport-local').Strategy,
        GoogleStrategy = require('passport-google-oauth').OAuth2Strategy,
        FacebookStrategy = require('passport-facebook').Strategy,
        RememberMeStrategy = require('passport-remember-me').Strategy,
    Severity: Major
    Found in routes/auth/index.js - About 1 day to fix

      Function has too many statements (48). Maximum allowed is 30.
      Open

      module.exports = function(app) {
      Severity: Minor
      Found in routes/auth/index.js by eslint

      enforce a maximum number of statements allowed in function blocks (max-statements)

      The max-statements rule allows you to specify the maximum number of statements allowed in a function.

      function foo() {
        var bar = 1; // one statement
        var baz = 2; // two statements
        var qux = 3; // three statements
      }

      Rule Details

      This rule enforces a maximum number of statements allowed in function blocks.

      Options

      This rule has a number or object option:

      • "max" (default 10) enforces a maximum number of statements allows in function blocks

      Deprecated: The object property maximum is deprecated; please use the object property max instead.

      This rule has an object option:

      • "ignoreTopLevelFunctions": true ignores top-level functions

      max

      Examples of incorrect code for this rule with the default { "max": 10 } option:

      /*eslint max-statements: ["error", 10]*/
      /*eslint-env es6*/
      
      function foo() {
        var foo1 = 1;
        var foo2 = 2;
        var foo3 = 3;
        var foo4 = 4;
        var foo5 = 5;
        var foo6 = 6;
        var foo7 = 7;
        var foo8 = 8;
        var foo9 = 9;
        var foo10 = 10;
      
        var foo11 = 11; // Too many.
      }
      
      let foo = () => {
        var foo1 = 1;
        var foo2 = 2;
        var foo3 = 3;
        var foo4 = 4;
        var foo5 = 5;
        var foo6 = 6;
        var foo7 = 7;
        var foo8 = 8;
        var foo9 = 9;
        var foo10 = 10;
      
        var foo11 = 11; // Too many.
      };

      Examples of correct code for this rule with the default { "max": 10 } option:

      /*eslint max-statements: ["error", 10]*/
      /*eslint-env es6*/
      
      function foo() {
        var foo1 = 1;
        var foo2 = 2;
        var foo3 = 3;
        var foo4 = 4;
        var foo5 = 5;
        var foo6 = 6;
        var foo7 = 7;
        var foo8 = 8;
        var foo9 = 9;
        var foo10 = 10;
        return function () {
      
          // The number of statements in the inner function does not count toward the
          // statement maximum.
      
          return 42;
        };
      }
      
      let foo = () => {
        var foo1 = 1;
        var foo2 = 2;
        var foo3 = 3;
        var foo4 = 4;
        var foo5 = 5;
        var foo6 = 6;
        var foo7 = 7;
        var foo8 = 8;
        var foo9 = 9;
        var foo10 = 10;
        return function () {
      
          // The number of statements in the inner function does not count toward the
          // statement maximum.
      
          return 42;
        };
      }

      ignoreTopLevelFunctions

      Examples of additional correct code for this rule with the { "max": 10 }, { "ignoreTopLevelFunctions": true } options:

      /*eslint max-statements: ["error", 10, { "ignoreTopLevelFunctions": true }]*/
      
      function foo() {
        var foo1 = 1;
        var foo2 = 2;
        var foo3 = 3;
        var foo4 = 4;
        var foo5 = 5;
        var foo6 = 6;
        var foo7 = 7;
        var foo8 = 8;
        var foo9 = 9;
        var foo10 = 10;
        var foo11 = 11;
      }

      Related Rules

      • [complexity](complexity.md)
      • [max-depth](max-depth.md)
      • [max-len](max-len.md)
      • [max-nested-callbacks](max-nested-callbacks.md)
      • [max-params](max-params.md) Source: http://eslint.org/docs/rules/

      Function facebookAuth has 57 lines of code (exceeds 25 allowed). Consider refactoring.
      Open

          function facebookAuth (req, profile, token) {
              var usr;
              return models.User.findOne({ where: { 'facebook_id' : profile.id } }).then(function(user) {
                  if (user === null) {
                      if (!('emails' in profile) || profile.emails.length === 0) {
      Severity: Major
      Found in routes/auth/index.js - About 2 hrs to fix

        Function has too many statements (34). Maximum allowed is 30.
        Open

            app.post('/profile', function(req, res) {
        Severity: Minor
        Found in routes/auth/index.js by eslint

        enforce a maximum number of statements allowed in function blocks (max-statements)

        The max-statements rule allows you to specify the maximum number of statements allowed in a function.

        function foo() {
          var bar = 1; // one statement
          var baz = 2; // two statements
          var qux = 3; // three statements
        }

        Rule Details

        This rule enforces a maximum number of statements allowed in function blocks.

        Options

        This rule has a number or object option:

        • "max" (default 10) enforces a maximum number of statements allows in function blocks

        Deprecated: The object property maximum is deprecated; please use the object property max instead.

        This rule has an object option:

        • "ignoreTopLevelFunctions": true ignores top-level functions

        max

        Examples of incorrect code for this rule with the default { "max": 10 } option:

        /*eslint max-statements: ["error", 10]*/
        /*eslint-env es6*/
        
        function foo() {
          var foo1 = 1;
          var foo2 = 2;
          var foo3 = 3;
          var foo4 = 4;
          var foo5 = 5;
          var foo6 = 6;
          var foo7 = 7;
          var foo8 = 8;
          var foo9 = 9;
          var foo10 = 10;
        
          var foo11 = 11; // Too many.
        }
        
        let foo = () => {
          var foo1 = 1;
          var foo2 = 2;
          var foo3 = 3;
          var foo4 = 4;
          var foo5 = 5;
          var foo6 = 6;
          var foo7 = 7;
          var foo8 = 8;
          var foo9 = 9;
          var foo10 = 10;
        
          var foo11 = 11; // Too many.
        };

        Examples of correct code for this rule with the default { "max": 10 } option:

        /*eslint max-statements: ["error", 10]*/
        /*eslint-env es6*/
        
        function foo() {
          var foo1 = 1;
          var foo2 = 2;
          var foo3 = 3;
          var foo4 = 4;
          var foo5 = 5;
          var foo6 = 6;
          var foo7 = 7;
          var foo8 = 8;
          var foo9 = 9;
          var foo10 = 10;
          return function () {
        
            // The number of statements in the inner function does not count toward the
            // statement maximum.
        
            return 42;
          };
        }
        
        let foo = () => {
          var foo1 = 1;
          var foo2 = 2;
          var foo3 = 3;
          var foo4 = 4;
          var foo5 = 5;
          var foo6 = 6;
          var foo7 = 7;
          var foo8 = 8;
          var foo9 = 9;
          var foo10 = 10;
          return function () {
        
            // The number of statements in the inner function does not count toward the
            // statement maximum.
        
            return 42;
          };
        }

        ignoreTopLevelFunctions

        Examples of additional correct code for this rule with the { "max": 10 }, { "ignoreTopLevelFunctions": true } options:

        /*eslint max-statements: ["error", 10, { "ignoreTopLevelFunctions": true }]*/
        
        function foo() {
          var foo1 = 1;
          var foo2 = 2;
          var foo3 = 3;
          var foo4 = 4;
          var foo5 = 5;
          var foo6 = 6;
          var foo7 = 7;
          var foo8 = 8;
          var foo9 = 9;
          var foo10 = 10;
          var foo11 = 11;
        }

        Related Rules

        • [complexity](complexity.md)
        • [max-depth](max-depth.md)
        • [max-len](max-len.md)
        • [max-nested-callbacks](max-nested-callbacks.md)
        • [max-params](max-params.md) Source: http://eslint.org/docs/rules/

        Function googleAuth has 50 lines of code (exceeds 25 allowed). Consider refactoring.
        Open

            function googleAuth (req, profile, token) {
                var usr;
                return models.User.findOne({ where: { 'google_id' : profile.id } }).then(function(user) {
                    if (user === null) {
                        // If we don't find it by google id, we try by email
        Severity: Minor
        Found in routes/auth/index.js - About 2 hrs to fix

          Function exports has a Cognitive Complexity of 9 (exceeds 5 allowed). Consider refactoring.
          Open

          module.exports = function(app) {
              utils(app);
          
              var oauthConfig = nconf.get('app').oAuth;
          
          
          Severity: Minor
          Found in routes/auth/index.js - About 55 mins to fix

          Cognitive Complexity

          Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

          A method's cognitive complexity is based on a few simple rules:

          • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
          • Code is considered more complex for each "break in the linear flow of the code"
          • Code is considered more complex when "flow breaking structures are nested"

          Further reading

          Avoid deeply nested control flow statements.
          Open

                      if (!/^[A-Za-z0-9_.\-~]+$/.test(req.body.login)) {
                          req.session.error = 'username_invalid_error_msg';
                          Utils.copyAttributes({
                              userFormData: req.body
                          }, res.locals);
          Severity: Major
          Found in routes/auth/index.js - About 45 mins to fix

            Avoid deeply nested control flow statements.
            Open

                            if (err && err.name === 'SequelizeUniqueConstraintError' &&
                                ((err.errors && err.errors.constructor === Array && err.errors[0].path === 'login') ||
                                (err.message.indexOf('users_login_key') > -1))) {
                                req.session.error = 'username_duplicated_error_msg';
                                logger.debug('Login already in use: ' + err);
            Severity: Major
            Found in routes/auth/index.js - About 45 mins to fix

              Avoid deeply nested control flow statements.
              Open

                      } else if (req.body.preferences) {
                          // Other preferences update
                          req.user.accept_info_email = req.body.accept_info_email = 'accept_info_email' in req.body
                          req.user.save().then(function(user) {
                              req.session.success = 'update_preferences_success_msg';
              Severity: Major
              Found in routes/auth/index.js - About 45 mins to fix

                Consider simplifying this complex logical expression.
                Open

                                } else if (err && err.name === 'SequelizeUniqueConstraintError' &&
                                    ((err.errors && err.errors.constructor === Array && err.errors[0].path === 'login') ||
                                    (err.message.indexOf('users_login_key') > -1))) {
                                    req.session.error = 'username_duplicated_error_msg';
                                    logger.debug('Login already in use: ' + err);
                Severity: Major
                Found in routes/auth/index.js - About 40 mins to fix

                  Consider simplifying this complex logical expression.
                  Open

                                  if (err && err.name === 'SequelizeUniqueConstraintError' &&
                                      ((err.errors && err.errors.constructor === Array && err.errors[0].path === 'email') ||
                                      (err.message.indexOf('users_email_key') > -1))) {
                                      req.session.error = 'email_duplicated_error_msg';
                                      logger.debug('E-mail already exists: ' + err);
                  Severity: Major
                  Found in routes/auth/index.js - About 40 mins to fix

                    Consider simplifying this complex logical expression.
                    Open

                                    if (err && err.name === 'SequelizeUniqueConstraintError' &&
                                        ((err.errors && err.errors.constructor === Array && err.errors[0].path === 'login') ||
                                        (err.message.indexOf('users_login_key') > -1))) {
                                        user.login = originalLogin;
                                        return nextLoginUserSignup(user, tryNr + 1);
                    Severity: Major
                    Found in routes/auth/index.js - About 40 mins to fix

                      Consider simplifying this complex logical expression.
                      Open

                                      if (err && err.name === 'SequelizeUniqueConstraintError' &&
                                          ((err.errors && err.errors.constructor === Array && err.errors[0].path === 'login') ||
                                          (err.message.indexOf('users_login_key') > -1))) {
                                          req.session.error = 'username_duplicated_error_msg';
                                          logger.debug('Login already in use: ' + err);
                      Severity: Major
                      Found in routes/auth/index.js - About 40 mins to fix

                        'isNull' is already defined.
                        Open

                                    var isNull = (req.body.lon === '' && req.body.lat === '');
                        Severity: Minor
                        Found in routes/auth/index.js by eslint

                        disallow variable redeclaration (no-redeclare)

                        In JavaScript, it's possible to redeclare the same variable name using var. This can lead to confusion as to where the variable is actually declared and initialized.

                        Rule Details

                        This rule is aimed at eliminating variables that have multiple declarations in the same scope.

                        Examples of incorrect code for this rule:

                        /*eslint no-redeclare: "error"*/
                        
                        var a = 3;
                        var a = 10;

                        Examples of correct code for this rule:

                        /*eslint no-redeclare: "error"*/
                        
                        var a = 3;
                        // ...
                        a = 10;

                        Options

                        This rule takes one optional argument, an object with a boolean property "builtinGlobals". It defaults to false. If set to true, this rule also checks redeclaration of built-in globals, such as Object, Array, Number...

                        builtinGlobals

                        Examples of incorrect code for the { "builtinGlobals": true } option:

                        /*eslint no-redeclare: ["error", { "builtinGlobals": true }]*/
                        
                        var Object = 0;

                        Examples of incorrect code for the { "builtinGlobals": true } option and the browser environment:

                        /*eslint no-redeclare: ["error", { "builtinGlobals": true }]*/
                        /*eslint-env browser*/
                        
                        var top = 0;

                        The browser environment has many built-in global variables (for example, top). Some of built-in global variables cannot be redeclared. Source: http://eslint.org/docs/rules/

                        Expected error to be handled.
                        Open

                                }).catch({ message: 'password_reset_invalid_user' }, function(err) {
                        Severity: Minor
                        Found in routes/auth/index.js by eslint

                        Enforce Callback Error Handling (handle-callback-err)

                        In Node.js, a common pattern for dealing with asynchronous behavior is called the callback pattern. This pattern expects an Error object or null as the first argument of the callback. Forgetting to handle these errors can lead to some really strange behavior in your application.

                        function loadData (err, data) {
                            doSomething(); // forgot to handle error
                        }

                        Rule Details

                        This rule expects that when you're using the callback pattern in Node.js you'll handle the error.

                        Options

                        The rule takes a single string option: the name of the error parameter. The default is "err".

                        Examples of incorrect code for this rule with the default "err" parameter name:

                        /*eslint handle-callback-err: "error"*/
                        
                        function loadData (err, data) {
                            doSomething();
                        }

                        Examples of correct code for this rule with the default "err" parameter name:

                        /*eslint handle-callback-err: "error"*/
                        
                        function loadData (err, data) {
                            if (err) {
                                console.log(err.stack);
                            }
                            doSomething();
                        }
                        
                        function generateError (err) {
                            if (err) {}
                        }

                        Examples of correct code for this rule with a sample "error" parameter name:

                        /*eslint handle-callback-err: ["error", "error"]*/
                        
                        function loadData (error, data) {
                            if (error) {
                               console.log(error.stack);
                            }
                            doSomething();
                        }

                        regular expression

                        Sometimes (especially in big projects) the name of the error variable is not consistent across the project, so you need a more flexible configuration to ensure that the rule reports all unhandled errors.

                        If the configured name of the error variable begins with a ^ it is considered to be a regexp pattern.

                        • If the option is "^(err|error|anySpecificError)$", the rule reports unhandled errors where the parameter name can be err, error or anySpecificError.
                        • If the option is "^.+Error$", the rule reports unhandled errors where the parameter name ends with Error (for example, connectionError or validationError will match).
                        • If the option is "^.*(e|E)rr", the rule reports unhandled errors where the parameter name matches any string that contains err or Err (for example, err, error, anyError, some_err will match).

                        When Not To Use It

                        There are cases where it may be safe for your application to ignore errors, however only ignore errors if you are confident that some other form of monitoring will help you catch the problem.

                        Further Reading

                        Expected error to be handled.
                        Open

                                }).catch({ message: 'resend_activation_mail_activated_user' }, function(err) {
                        Severity: Minor
                        Found in routes/auth/index.js by eslint

                        Enforce Callback Error Handling (handle-callback-err)

                        In Node.js, a common pattern for dealing with asynchronous behavior is called the callback pattern. This pattern expects an Error object or null as the first argument of the callback. Forgetting to handle these errors can lead to some really strange behavior in your application.

                        function loadData (err, data) {
                            doSomething(); // forgot to handle error
                        }

                        Rule Details

                        This rule expects that when you're using the callback pattern in Node.js you'll handle the error.

                        Options

                        The rule takes a single string option: the name of the error parameter. The default is "err".

                        Examples of incorrect code for this rule with the default "err" parameter name:

                        /*eslint handle-callback-err: "error"*/
                        
                        function loadData (err, data) {
                            doSomething();
                        }

                        Examples of correct code for this rule with the default "err" parameter name:

                        /*eslint handle-callback-err: "error"*/
                        
                        function loadData (err, data) {
                            if (err) {
                                console.log(err.stack);
                            }
                            doSomething();
                        }
                        
                        function generateError (err) {
                            if (err) {}
                        }

                        Examples of correct code for this rule with a sample "error" parameter name:

                        /*eslint handle-callback-err: ["error", "error"]*/
                        
                        function loadData (error, data) {
                            if (error) {
                               console.log(error.stack);
                            }
                            doSomething();
                        }

                        regular expression

                        Sometimes (especially in big projects) the name of the error variable is not consistent across the project, so you need a more flexible configuration to ensure that the rule reports all unhandled errors.

                        If the configured name of the error variable begins with a ^ it is considered to be a regexp pattern.

                        • If the option is "^(err|error|anySpecificError)$", the rule reports unhandled errors where the parameter name can be err, error or anySpecificError.
                        • If the option is "^.+Error$", the rule reports unhandled errors where the parameter name ends with Error (for example, connectionError or validationError will match).
                        • If the option is "^.*(e|E)rr", the rule reports unhandled errors where the parameter name matches any string that contains err or Err (for example, err, error, anyError, some_err will match).

                        When Not To Use It

                        There are cases where it may be safe for your application to ignore errors, however only ignore errors if you are confident that some other form of monitoring will help you catch the problem.

                        Further Reading

                        Expected error to be handled.
                        Open

                                }).catch({ message: 'password_reset_invalid_user' }, function(err) {
                        Severity: Minor
                        Found in routes/auth/index.js by eslint

                        Enforce Callback Error Handling (handle-callback-err)

                        In Node.js, a common pattern for dealing with asynchronous behavior is called the callback pattern. This pattern expects an Error object or null as the first argument of the callback. Forgetting to handle these errors can lead to some really strange behavior in your application.

                        function loadData (err, data) {
                            doSomething(); // forgot to handle error
                        }

                        Rule Details

                        This rule expects that when you're using the callback pattern in Node.js you'll handle the error.

                        Options

                        The rule takes a single string option: the name of the error parameter. The default is "err".

                        Examples of incorrect code for this rule with the default "err" parameter name:

                        /*eslint handle-callback-err: "error"*/
                        
                        function loadData (err, data) {
                            doSomething();
                        }

                        Examples of correct code for this rule with the default "err" parameter name:

                        /*eslint handle-callback-err: "error"*/
                        
                        function loadData (err, data) {
                            if (err) {
                                console.log(err.stack);
                            }
                            doSomething();
                        }
                        
                        function generateError (err) {
                            if (err) {}
                        }

                        Examples of correct code for this rule with a sample "error" parameter name:

                        /*eslint handle-callback-err: ["error", "error"]*/
                        
                        function loadData (error, data) {
                            if (error) {
                               console.log(error.stack);
                            }
                            doSomething();
                        }

                        regular expression

                        Sometimes (especially in big projects) the name of the error variable is not consistent across the project, so you need a more flexible configuration to ensure that the rule reports all unhandled errors.

                        If the configured name of the error variable begins with a ^ it is considered to be a regexp pattern.

                        • If the option is "^(err|error|anySpecificError)$", the rule reports unhandled errors where the parameter name can be err, error or anySpecificError.
                        • If the option is "^.+Error$", the rule reports unhandled errors where the parameter name ends with Error (for example, connectionError or validationError will match).
                        • If the option is "^.*(e|E)rr", the rule reports unhandled errors where the parameter name matches any string that contains err or Err (for example, err, error, anyError, some_err will match).

                        When Not To Use It

                        There are cases where it may be safe for your application to ignore errors, however only ignore errors if you are confident that some other form of monitoring will help you catch the problem.

                        Further Reading

                        Expected error to be handled.
                        Open

                                }).catch({ message: 'resend_activation_mail_invalid_user' }, function(err) {
                        Severity: Minor
                        Found in routes/auth/index.js by eslint

                        Enforce Callback Error Handling (handle-callback-err)

                        In Node.js, a common pattern for dealing with asynchronous behavior is called the callback pattern. This pattern expects an Error object or null as the first argument of the callback. Forgetting to handle these errors can lead to some really strange behavior in your application.

                        function loadData (err, data) {
                            doSomething(); // forgot to handle error
                        }

                        Rule Details

                        This rule expects that when you're using the callback pattern in Node.js you'll handle the error.

                        Options

                        The rule takes a single string option: the name of the error parameter. The default is "err".

                        Examples of incorrect code for this rule with the default "err" parameter name:

                        /*eslint handle-callback-err: "error"*/
                        
                        function loadData (err, data) {
                            doSomething();
                        }

                        Examples of correct code for this rule with the default "err" parameter name:

                        /*eslint handle-callback-err: "error"*/
                        
                        function loadData (err, data) {
                            if (err) {
                                console.log(err.stack);
                            }
                            doSomething();
                        }
                        
                        function generateError (err) {
                            if (err) {}
                        }

                        Examples of correct code for this rule with a sample "error" parameter name:

                        /*eslint handle-callback-err: ["error", "error"]*/
                        
                        function loadData (error, data) {
                            if (error) {
                               console.log(error.stack);
                            }
                            doSomething();
                        }

                        regular expression

                        Sometimes (especially in big projects) the name of the error variable is not consistent across the project, so you need a more flexible configuration to ensure that the rule reports all unhandled errors.

                        If the configured name of the error variable begins with a ^ it is considered to be a regexp pattern.

                        • If the option is "^(err|error|anySpecificError)$", the rule reports unhandled errors where the parameter name can be err, error or anySpecificError.
                        • If the option is "^.+Error$", the rule reports unhandled errors where the parameter name ends with Error (for example, connectionError or validationError will match).
                        • If the option is "^.*(e|E)rr", the rule reports unhandled errors where the parameter name matches any string that contains err or Err (for example, err, error, anyError, some_err will match).

                        When Not To Use It

                        There are cases where it may be safe for your application to ignore errors, however only ignore errors if you are confident that some other form of monitoring will help you catch the problem.

                        Further Reading

                        Similar blocks of code found in 2 locations. Consider refactoring.
                        Open

                                    req.user.save().then(function(user) {
                                        if (isNull) {
                                            req.session.success = 'delete_avatar_success_msg';
                                            logger.info("Sucessfully deleted avatar for user with mail " + user.email + " and id " + user.id);
                                        } else {
                        Severity: Major
                        Found in routes/auth/index.js and 1 other location - About 1 day to fix
                        routes/auth/index.js on lines 430..453

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 340.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        Similar blocks of code found in 2 locations. Consider refactoring.
                        Open

                                    req.user.save().then(function(user) {
                                        if (isNull) {
                                            req.session.success = 'delete_user_position_success_msg';
                                            logger.info("Sucessfully deleted default position for user with mail " + user.email + " and id " + user.id);
                                        } else {
                        Severity: Major
                        Found in routes/auth/index.js and 1 other location - About 1 day to fix
                        routes/auth/index.js on lines 393..416

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 340.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        Similar blocks of code found in 2 locations. Consider refactoring.
                        Open

                                            if (user === null) {
                                                // If we don't find it either by facebook id or email, we
                                                // create a new user.
                                                logger.debug("Could not find user in db for Facebook signin: " + profile.id + " / " + profile.emails[0].value);
                                                usr = {
                        Severity: Major
                        Found in routes/auth/index.js and 1 other location - About 4 hrs to fix
                        routes/auth/index.js on lines 663..704

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 134.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        Similar blocks of code found in 2 locations. Consider refactoring.
                        Open

                                            if (user === null) {
                                                // If we don't find it either by google id or email, we
                                                // create a new user.
                                                logger.debug("Could not find user in db for Google signin: " + profile.id + " / " + profile.emails[0].value);
                                                usr = {
                        Severity: Major
                        Found in routes/auth/index.js and 1 other location - About 4 hrs to fix
                        routes/auth/index.js on lines 723..768

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 134.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        Similar blocks of code found in 2 locations. Consider refactoring.
                        Open

                                                return avatarPromise.then(function(avatar) {
                                                    usr.avatar = avatar;
                                                    return nextLoginUserSignup(usr, 0).then(function(user) {
                                                        logger.info("Registered new user from Google data with mail " + user.email + " and id " + user.id);
                                                        req.session.success = 'google_signup_success_msg';
                        Severity: Major
                        Found in routes/auth/index.js and 1 other location - About 3 hrs to fix
                        routes/auth/index.js on lines 751..758

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 107.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        Similar blocks of code found in 2 locations. Consider refactoring.
                        Open

                                                return avatarPromise.then(function(avatar) {
                                                    usr.avatar = avatar;
                                                    return nextLoginUserSignup(usr, 0).then(function(user) {
                                                        logger.info("Registered new user from Facebook data with mail " + user.email + " and id " + user.id);
                                                        req.session.success = 'facebook_signup_success_msg';
                        Severity: Major
                        Found in routes/auth/index.js and 1 other location - About 3 hrs to fix
                        routes/auth/index.js on lines 687..694

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 107.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        Similar blocks of code found in 2 locations. Consider refactoring.
                        Open

                                    facebookAuth(req, profile, token).then(function(user) {
                                        if (user) {
                                            logger.debug("Logged in as: " + user.email);
                                            done(null, user);
                                        } else {
                        Severity: Major
                        Found in routes/auth/index.js and 1 other location - About 2 hrs to fix
                        routes/auth/index.js on lines 851..863

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 91.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        Similar blocks of code found in 2 locations. Consider refactoring.
                        Open

                                    googleAuth(req, profile, token).then(function(user) {
                                        if (user) {
                                            logger.debug("Logged in as: " + user.email);
                                            done(null, user);
                                        } else {
                        Severity: Major
                        Found in routes/auth/index.js and 1 other location - About 2 hrs to fix
                        routes/auth/index.js on lines 874..891

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 91.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        Similar blocks of code found in 2 locations. Consider refactoring.
                        Open

                                    req.user.save().then(function(user) {
                                        req.session.success = 'update_user_success_msg';
                                        logger.info("Sucessfully updated user with mail " + user.email + " and id " + user.id);
                                        return res.redirect('/profile');
                                    }).catch(function(err) {
                        Severity: Major
                        Found in routes/auth/index.js and 1 other location - About 2 hrs to fix
                        routes/auth/index.js on lines 491..504

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 88.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        Similar blocks of code found in 2 locations. Consider refactoring.
                        Open

                                    req.user.save().then(function(user) {
                                        req.session.success = 'update_preferences_success_msg';
                                        logger.info("Sucessfully updated preferences for user with mail " + user.email + " and id " + user.id);
                                        return res.redirect('/profile');
                                    }).catch(function(err) {
                        Severity: Major
                        Found in routes/auth/index.js and 1 other location - About 2 hrs to fix
                        routes/auth/index.js on lines 467..487

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 88.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        Similar blocks of code found in 4 locations. Consider refactoring.
                        Open

                                        if (err && err.name === 'SequelizeUniqueConstraintError' &&
                                            ((err.errors && err.errors.constructor === Array && err.errors[0].path === 'email') ||
                                            (err.message.indexOf('users_email_key') > -1))) {
                                            req.session.error = 'email_duplicated_error_msg';
                                            logger.debug('E-mail already exists: ' + err);
                        Severity: Major
                        Found in routes/auth/index.js and 3 other locations - About 2 hrs to fix
                        routes/auth/index.js on lines 258..266
                        routes/auth/index.js on lines 472..480
                        routes/auth/index.js on lines 786..793

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 80.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        Similar blocks of code found in 4 locations. Consider refactoring.
                        Open

                                        if (err && err.name === 'SequelizeUniqueConstraintError' &&
                                            ((err.errors && err.errors.constructor === Array && err.errors[0].path === 'login') ||
                                            (err.message.indexOf('users_login_key') > -1))) {
                                            req.session.error = 'username_duplicated_error_msg';
                                            logger.debug('Login already in use: ' + err);
                        Severity: Major
                        Found in routes/auth/index.js and 3 other locations - About 2 hrs to fix
                        routes/auth/index.js on lines 253..266
                        routes/auth/index.js on lines 258..266
                        routes/auth/index.js on lines 786..793

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 80.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        Similar blocks of code found in 4 locations. Consider refactoring.
                        Open

                                        } else if (err && err.name === 'SequelizeUniqueConstraintError' &&
                                            ((err.errors && err.errors.constructor === Array && err.errors[0].path === 'login') ||
                                            (err.message.indexOf('users_login_key') > -1))) {
                                            req.session.error = 'username_duplicated_error_msg';
                                            logger.debug('Login already in use: ' + err);
                        Severity: Major
                        Found in routes/auth/index.js and 3 other locations - About 2 hrs to fix
                        routes/auth/index.js on lines 253..266
                        routes/auth/index.js on lines 472..480
                        routes/auth/index.js on lines 786..793

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 80.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        Similar blocks of code found in 4 locations. Consider refactoring.
                        Open

                                        if (err && err.name === 'SequelizeUniqueConstraintError' &&
                                            ((err.errors && err.errors.constructor === Array && err.errors[0].path === 'login') ||
                                            (err.message.indexOf('users_login_key') > -1))) {
                                            user.login = originalLogin;
                                            return nextLoginUserSignup(user, tryNr + 1);
                        Severity: Major
                        Found in routes/auth/index.js and 3 other locations - About 2 hrs to fix
                        routes/auth/index.js on lines 253..266
                        routes/auth/index.js on lines 258..266
                        routes/auth/index.js on lines 472..480

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 80.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        Similar blocks of code found in 3 locations. Consider refactoring.
                        Open

                            app.get('/pwd_reset', function(req, res){
                                if (req.user) {
                                    res.redirect('/');
                                } else {
                                    res.render('password-reset', {layout: 'layouts/main'});
                        Severity: Major
                        Found in routes/auth/index.js and 2 other locations - About 1 hr to fix
                        routes/main.js on lines 13..19
                        routes/main.js on lines 21..27

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 63.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        Identical blocks of code found in 2 locations. Consider refactoring.
                        Open

                                    req.user.geom = !isNull ? {
                                        type: 'Point',
                                        coordinates: [ parseFloat(req.body.lon), parseFloat(req.body.lat) ],
                                        crs: {
                                            type: "name",
                        Severity: Major
                        Found in routes/auth/index.js and 1 other location - About 1 hr to fix
                        routes/auth/index.js on lines 225..234

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 61.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        Identical blocks of code found in 2 locations. Consider refactoring.
                        Open

                                    user.geom = {
                                        type: 'Point',
                                        coordinates: [ parseFloat(req.body.lon), parseFloat(req.body.lat) ],
                                        crs: {
                                            type: "name",
                        Severity: Major
                        Found in routes/auth/index.js and 1 other location - About 1 hr to fix
                        routes/auth/index.js on lines 420..429

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 61.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        Similar blocks of code found in 2 locations. Consider refactoring.
                        Open

                                    case 'google':
                                        if (req.body.id !== user.google_id) {
                                            return res.redirect('/profile');
                                        }
                                        user.google_id = null;
                        Severity: Major
                        Found in routes/auth/index.js and 1 other location - About 1 hr to fix
                        routes/auth/index.js on lines 314..320

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 61.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        Similar blocks of code found in 2 locations. Consider refactoring.
                        Open

                                    case 'facebook':
                                        if (req.body.id !== user.facebook_id) {
                                            return res.redirect('/profile');
                                        }
                                        user.facebook_id = null;
                        Severity: Major
                        Found in routes/auth/index.js and 1 other location - About 1 hr to fix
                        routes/auth/index.js on lines 307..313

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 61.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        Similar blocks of code found in 4 locations. Consider refactoring.
                        Open

                                models.User.findOne({ where: {email: req.body.email} }).then(function(usr) {
                                    user = usr;
                                    if (!user) {
                                        throw new Error('resend_activation_mail_invalid_user');
                                    }
                        Severity: Major
                        Found in routes/auth/index.js and 3 other locations - About 55 mins to fix
                        routes/auth/index.js on lines 515..526
                        routes/auth/index.js on lines 540..562
                        routes/auth/index.js on lines 575..592

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 53.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        Similar blocks of code found in 4 locations. Consider refactoring.
                        Open

                                models.User.findOne({ where: {email: req.body.email, activated: true} }).then(function(usr) {
                                    user = usr;
                                    if (!user) {
                                        throw new Error('password_reset_invalid_user');
                                    }
                        Severity: Major
                        Found in routes/auth/index.js and 3 other locations - About 55 mins to fix
                        routes/auth/index.js on lines 540..562
                        routes/auth/index.js on lines 575..589
                        routes/auth/index.js on lines 575..592

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 53.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        Similar blocks of code found in 4 locations. Consider refactoring.
                        Open

                                models.User.findOne({
                                    where: models.Sequelize.where(
                                        models.Sequelize.fn('md5', models.Sequelize.fn('concat', models.Sequelize.col('salt'), models.Sequelize.col('email'))),
                                        req.query.id
                                    )
                        Severity: Major
                        Found in routes/auth/index.js and 3 other locations - About 55 mins to fix
                        routes/auth/index.js on lines 515..526
                        routes/auth/index.js on lines 575..589
                        routes/auth/index.js on lines 575..592

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 53.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        Identical blocks of code found in 2 locations. Consider refactoring.
                        Open

                                        models.Sequelize.fn('md5', models.Sequelize.fn('concat', models.Sequelize.col('salt'), models.Sequelize.col('email'))),
                        Severity: Minor
                        Found in routes/auth/index.js and 1 other location - About 50 mins to fix
                        routes/auth/utils_auth.js on lines 89..89

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 52.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        Similar blocks of code found in 2 locations. Consider refactoring.
                        Open

                                                sequelize.query('INSERT INTO oauth2.access_tokens(token, expiration_date, client_id, user_id) VALUES (?, ?, ?, ?);', {
                                                    replacements: [token.accessToken, token.accessTokenExpiresAt, client.id, user.id],
                                                    type: sequelize.QueryTypes.INSERT
                                                }),
                        Severity: Minor
                        Found in routes/auth/index.js and 1 other location - About 45 mins to fix
                        routes/auth/index.js on lines 84..87

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 50.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        Similar blocks of code found in 2 locations. Consider refactoring.
                        Open

                                                sequelize.query('INSERT INTO oauth2.refresh_tokens(token, expiration_date, client_id, user_id) VALUES (?, ?, ?, ?);', {
                                                    replacements: [token.refreshToken, token.refreshTokenExpiresAt, client.id, user.id],
                                                    type: sequelize.QueryTypes.INSERT
                                                }),
                        Severity: Minor
                        Found in routes/auth/index.js and 1 other location - About 45 mins to fix
                        routes/auth/index.js on lines 80..83

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 50.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        Similar blocks of code found in 2 locations. Consider refactoring.
                        Open

                                    localAuth(email ? email.trim() : email, password ? password.trim() : password)
                                    .then(function (user) {
                                        if (user) {
                                            logger.debug("Logged in as: " + user.email);
                                            done(null, user);
                        Severity: Minor
                        Found in routes/auth/index.js and 1 other location - About 45 mins to fix
                        routes/auth/index.js on lines 851..863

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 50.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        There are no issues that match your filters.

                        Category
                        Status