Auth plugin compat with regular user accounts
authorChocobozzz <me@florianbigard.com>
Thu, 30 Apr 2020 07:42:30 +0000 (09:42 +0200)
committerChocobozzz <chocobozzz@cpy.re>
Mon, 4 May 2020 14:21:39 +0000 (16:21 +0200)
server/lib/oauth-model.ts

index 8d8a6d85e60bb9a9e92c93d88f089e02f2f7b513..136abd0c45746db4af8bebca9ce3deeb655903cd 100644 (file)
@@ -109,10 +109,14 @@ async function getUser (usernameOrEmail?: string, password?: string) {
     let user = await UserModel.loadByEmail(obj.user.email)
     if (!user) user = await createUserFromExternal(obj.pluginName, obj.user)
 
-    // This user does not belong to this plugin, skip it
-    if (user.pluginAuth !== obj.pluginName) return null
+    // If the user does not belongs to a plugin, it was created before its installation
+    // Then we just go through a regular login process
+    if (user.pluginAuth !== null) {
+      // This user does not belong to this plugin, skip it
+      if (user.pluginAuth !== obj.pluginName) return null
 
-    return user
+      return user
+    }
   }
 
   logger.debug('Getting User (username/email: ' + usernameOrEmail + ', password: ******).')
@@ -122,7 +126,7 @@ async function getUser (usernameOrEmail?: string, password?: string) {
   if (!user || user.pluginAuth !== null) return null
 
   const passwordMatch = await user.isPasswordMatch(password)
-  if (passwordMatch === false) return null
+  if (passwordMatch !== true) return null
 
   if (user.blocked) throw new AccessDeniedError('User is blocked.')