From a3774d9beba3892ef0386733f9a6090f3e496da9 Mon Sep 17 00:00:00 2001 From: David Arranz Date: Wed, 11 Sep 2024 10:11:51 +0200 Subject: [PATCH] =?UTF-8?q?Adaptaci=C3=B3n=20a=20versi=C3=B3n=20APP=201.5.?= =?UTF-8?q?0=20para=20dejar=20de=20usar=20Google=20Firebase?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/passport.js | 81 +++++++++++++++++++++++++++++++++--------------- 1 file changed, 56 insertions(+), 25 deletions(-) diff --git a/core/passport.js b/core/passport.js index aa32b0f..1f27328 100644 --- a/core/passport.js +++ b/core/passport.js @@ -47,10 +47,7 @@ passport.use( if (_.isNull(user)) { return done(null, false, { message: "User not found" }); } else { - var password_encoded = crypto - .createHash("sha512") - .update(password) - .digest("hex"); + var password_encoded = crypto.createHash("sha512").update(password).digest("hex"); const isPasswordValid = await user.comparePassword(password_encoded); if (!isPasswordValid) { return done(null, false, { message: "Wrong Password" }); @@ -76,6 +73,52 @@ const localPhoneOptions = { passport.use( "local-phone", + new LocalStrategy(localPhoneOptions, async (phone, fbuid, done) => { + try { + console.log("PASSPORT - local-phone-w/o-google"); + firebase_admin + .auth() + .getUserByPhoneNumber(phone) + .then(function (userRecord) { + if (userRecord && userRecord.toJSON().uid == fbuid) { + if (userRecord.toJSON().disabled) return done(null, false, { message: "User disabled in fb" }); + else + return done(null, userRecord.toJSON(), { + message: "Register user in FB", + }); + } else { + // Esto es para la versión de la APP 1.5.0 (sin Google Firebase) + if (phone === fbuid) { + const user = { + phone, + phoneNumber: phone, + uid: fbuid, + fbuid, + }; + return done(null, user, { message: "Registered user" }); + } else { + return done(null, false, { message: "User not validate in fb" }); + } + } + }) + .catch(function (error) { + //Servicio firebase caido o no funciona pero devuelvo el usuario + const user = { + phone: phone, + phoneNumber: phone, + uid: fbuid, + fbuid: fbuid, + }; + return done(null, user, error); + }); + } catch (error) { + return done(error); + } + }) +); + +passport.use( + "local-phone-firebase", new LocalStrategy(localPhoneOptions, async (phone, fbuid, done) => { try { console.log("PASSPORT - local-phone"); @@ -84,8 +127,7 @@ passport.use( .getUserByPhoneNumber(phone) .then(function (userRecord) { if (userRecord && userRecord.toJSON().uid == fbuid) { - if (userRecord.toJSON().disabled) - return done(null, false, { message: "User disabled in fb" }); + if (userRecord.toJSON().disabled) return done(null, false, { message: "User disabled in fb" }); else return done(null, userRecord.toJSON(), { message: "Register user", @@ -107,14 +149,12 @@ passport.use( ); /** - * + * */ -passport.use("api-key", +passport.use( + "api-key", new CustomStrategy(async (req, done) => { - const token = - req && req.headers && req.headers["x-access-key"] - ? req.headers["x-access-key"] - : null; + const token = req && req.headers && req.headers["x-access-key"] ? req.headers["x-access-key"] : null; if (!token) { console.error("Unauthorized. API KEY missing."); @@ -123,7 +163,7 @@ passport.use("api-key", const result = securityHelper.verify(token); if (result) { - console.log('Valid API KEY'); + console.log("Valid API KEY"); return done(null, {}, { message: "Valid API KEY" }); } else { //console.log('Token no válido'); @@ -137,14 +177,8 @@ passport.use("api-key", passport.use( "jwt", new CustomStrategy(async (req, done) => { - const token = - req && req.headers && req.headers["x-access-token"] - ? req.headers["x-access-token"] - : null; - const appVersion = - req && req.headers && req.headers["accept-version"] - ? req.headers["accept-version"] - : null; + const token = req && req.headers && req.headers["x-access-token"] ? req.headers["x-access-token"] : null; + const appVersion = req && req.headers && req.headers["accept-version"] ? req.headers["accept-version"] : null; console.log("appVersion: ", appVersion); if (!token) { @@ -160,10 +194,7 @@ passport.use( let user = await authService.extraMethods.findUser({ id: result.id }); if (user) { user = user.toJSON(); - userService._updateLastLoginAndVersionUser( - user.id, - appVersion - ); + userService._updateLastLoginAndVersionUser(user.id, appVersion); user.app_version = appVersion; user.token = token; delete user.password;