소스 검색

fix: force lowercase for email on local auth

NGPixel 4 년 전
부모
커밋
aa96e97028
4개의 변경된 파일16개의 추가작업 그리고 2개의 파일을 삭제
  1. 7 0
      server/db/migrations-sqlite/2.5.128.js
  2. 7 0
      server/db/migrations/2.5.128.js
  3. 1 1
      server/models/users.js
  4. 1 1
      server/modules/authentication/local/authentication.js

+ 7 - 0
server/db/migrations-sqlite/2.5.128.js

@@ -0,0 +1,7 @@
+exports.up = async knex => {
+  await knex('users').update({
+    email: knex.raw('LOWER(email)')
+  })
+}
+
+exports.down = knex => { }

+ 7 - 0
server/db/migrations/2.5.128.js

@@ -0,0 +1,7 @@
+exports.up = async knex => {
+  await knex('users').update({
+    email: knex.raw('LOWER(??)', ['email'])
+  })
+}
+
+exports.down = knex => { }

+ 1 - 1
server/models/users.js

@@ -675,7 +675,7 @@ module.exports = class User extends Model {
         if (dupUsr) {
           throw new WIKI.Error.AuthAccountAlreadyExists()
         }
-        usrData.email = email
+        usrData.email = _.toLower(email)
       }
       if (!_.isEmpty(name) && name !== usr.name) {
         usrData.name = _.trim(name)

+ 1 - 1
server/modules/authentication/local/authentication.js

@@ -15,7 +15,7 @@ module.exports = {
       }, async (uEmail, uPassword, done) => {
         try {
           const user = await WIKI.models.users.query().findOne({
-            email: uEmail,
+            email: uEmail.toLowerCase(),
             providerKey: 'local'
           })
           if (user) {