New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

happn-api

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

happn-api - npm Package Compare versions

Comparing version 1.0.1 to 1.0.2

19

dist/cjs/api/auth.js

@@ -11,5 +11,20 @@ "use strict";

async function withFacebook(credentials) {
const hasFacebookToken = await (0, db_1.getAuthDatas)(credentials.email);
if ((hasFacebookToken === null || hasFacebookToken === void 0 ? void 0 : hasFacebookToken.token) && hasFacebookToken.token !== "0") {
const tokenIsValid = await loginProcess(credentials, true);
if (tokenIsValid) {
return true;
}
return loginProcess(credentials, false);
}
else {
return loginProcess(credentials, false);
}
}
async function loginProcess(credentials, withToken) {
try {
await (0, facebookLogin_1.default)(credentials);
const authData = await (0, db_1.getAuthDatas)();
if (!withToken) {
await (0, facebookLogin_1.default)(credentials);
}
const authData = await (0, db_1.getAuthDatas)(credentials.email);
const assertionString = `{"facebook_token":"${authData.token}","mobile_token":"","mobile_id":""}`;

@@ -16,0 +31,0 @@ const datas = {

4

dist/cjs/db/db.d.ts
import { StringMap } from "yajdb/dist/esm/types/operations";
import { AuthData } from "../types/auth";
export declare function createDb(): Promise<boolean>;
export declare function updateLoginDatas(updatePayload: StringMap): Promise<boolean>;
export declare function getAuthDatas(): Promise<AuthData>;
export declare function updateLoginDatas(email: string, updatePayload: StringMap): Promise<boolean>;
export declare function getAuthDatas(email: string): Promise<AuthData>;

@@ -12,7 +12,5 @@ "use strict";

const tableStructure = [
{ name: "id", type: "string" },
{ name: "email", type: "string" },
{ name: "access_token", type: "string" },
];
const defaultValues = [{ id: "1", access_token: "0" }];
const searchPayload = { id: "1" };
async function createDb() {

@@ -22,6 +20,2 @@ try {

await table.createAsync(dbName, tableName, tableStructure);
const response = await table.selectAsync(dbName, tableName, searchPayload);
if (response.message === "[]" || response.message === "table is empty") {
await table.insertAsync(dbName, tableName, defaultValues);
}
return true;

@@ -34,5 +28,15 @@ }

exports.createDb = createDb;
async function updateLoginDatas(updatePayload) {
async function updateLoginDatas(email, updatePayload) {
try {
await table.updateAsync(dbName, tableName, searchPayload, updatePayload);
const userExistsResponse = await getAuthDatas(email);
if ((userExistsResponse === null || userExistsResponse === void 0 ? void 0 : userExistsResponse.token) !== "0") {
await table.updateAsync(dbName, tableName, {
email: email,
}, updatePayload);
}
else {
const newUser = { email, access_token: updatePayload.access_token };
const createUserResponse = await table.insertAsync(dbName, tableName, [newUser]);
return createUserResponse.success;
}
return true;

@@ -45,5 +49,7 @@ }

exports.updateLoginDatas = updateLoginDatas;
async function getAuthDatas() {
async function getAuthDatas(email) {
try {
const response = await table.selectAsync(dbName, tableName, searchPayload);
const response = await table.selectAsync(dbName, tableName, {
email: email,
});
const { access_token } = JSON.parse(response.message)[0];

@@ -50,0 +56,0 @@ return {

import { Credentials } from "../types/auth";
declare function facebookLogin(credentials: Credentials): Promise<void>;
declare function facebookLogin(credentials: Credentials): Promise<boolean>;
export default facebookLogin;

@@ -18,3 +18,3 @@ "use strict";

};
async function checkConsoleForToken(message) {
async function checkConsoleForToken(email, message) {
if (message.includes("access_token")) {

@@ -24,44 +24,50 @@ const accessToken = message

.split("&data_access_expiration_time")[0];
await (0, db_1.updateLoginDatas)({ access_token: accessToken });
await (0, db_1.updateLoginDatas)(email, { access_token: accessToken });
}
}
async function facebookLogin(credentials) {
await (0, db_1.createDb)();
const browser = await puppeteer_1.default.launch({
headless: true,
args: ["--no-sandbox", "--disable-setuid-sandbox"],
});
const page = await browser.newPage();
console.log("login in please wait...");
const login = async () => {
await page.goto(const_1.facebookUrl, {
waitUntil: "networkidle2",
try {
await (0, db_1.createDb)();
const browser = await puppeteer_1.default.launch({
headless: false,
args: ["--no-sandbox", "--disable-setuid-sandbox"],
});
page.on("console", async (message) => {
await checkConsoleForToken(message.text());
});
// bypass cookie alert
await page.keyboard.press("Enter");
await delay(1000);
// fill form
await page.waitForSelector("#email");
await page.type("#email", credentials.email);
await page.type("#pass", credentials.password);
await delay(500);
// login
await page.click("#loginbutton");
await page.waitForNavigation();
};
const getToken = async () => {
await page.goto(const_1.facebookAuthUrl, {
waitUntil: "networkidle2",
});
// bypass already logged
await page.click('[role="button"]');
await page.waitForNavigation();
};
await login();
await getToken();
await browser.close();
const page = await browser.newPage();
console.log("login in please wait...");
const login = async () => {
await page.goto(const_1.facebookUrl, {
waitUntil: "networkidle2",
});
page.on("console", async (message) => {
await checkConsoleForToken(credentials.email, message.text());
});
// bypass cookie alert
await page.keyboard.press("Enter");
await delay(1000);
// fill form
await page.waitForSelector("#email");
await page.type("#email", credentials.email);
await page.type("#pass", credentials.password);
await delay(500);
// login
await page.click("#loginbutton");
await page.waitForNavigation();
};
const getToken = async () => {
await page.goto(const_1.facebookAuthUrl, {
waitUntil: "networkidle2",
});
// bypass already logged
await page.click('[role="button"]');
await page.waitForNavigation();
};
await login();
await getToken();
await browser.close();
return true;
}
catch (error) {
return false;
}
}
exports.default = facebookLogin;

@@ -6,5 +6,20 @@ import { getAuthDatas } from "../db/db";

async function withFacebook(credentials) {
const hasFacebookToken = await getAuthDatas(credentials.email);
if ((hasFacebookToken === null || hasFacebookToken === void 0 ? void 0 : hasFacebookToken.token) && hasFacebookToken.token !== "0") {
const tokenIsValid = await loginProcess(credentials, true);
if (tokenIsValid) {
return true;
}
return loginProcess(credentials, false);
}
else {
return loginProcess(credentials, false);
}
}
async function loginProcess(credentials, withToken) {
try {
await facebookLogin(credentials);
const authData = await getAuthDatas();
if (!withToken) {
await facebookLogin(credentials);
}
const authData = await getAuthDatas(credentials.email);
const assertionString = `{"facebook_token":"${authData.token}","mobile_token":"","mobile_id":""}`;

@@ -11,0 +26,0 @@ const datas = {

import { StringMap } from "yajdb/dist/esm/types/operations";
import { AuthData } from "../types/auth";
export declare function createDb(): Promise<boolean>;
export declare function updateLoginDatas(updatePayload: StringMap): Promise<boolean>;
export declare function getAuthDatas(): Promise<AuthData>;
export declare function updateLoginDatas(email: string, updatePayload: StringMap): Promise<boolean>;
export declare function getAuthDatas(email: string): Promise<AuthData>;

@@ -6,7 +6,5 @@ import yajdb from "yajdb";

const tableStructure = [
{ name: "id", type: "string" },
{ name: "email", type: "string" },
{ name: "access_token", type: "string" },
];
const defaultValues = [{ id: "1", access_token: "0" }];
const searchPayload = { id: "1" };
export async function createDb() {

@@ -16,6 +14,2 @@ try {

await table.createAsync(dbName, tableName, tableStructure);
const response = await table.selectAsync(dbName, tableName, searchPayload);
if (response.message === "[]" || response.message === "table is empty") {
await table.insertAsync(dbName, tableName, defaultValues);
}
return true;

@@ -27,5 +21,15 @@ }

}
export async function updateLoginDatas(updatePayload) {
export async function updateLoginDatas(email, updatePayload) {
try {
await table.updateAsync(dbName, tableName, searchPayload, updatePayload);
const userExistsResponse = await getAuthDatas(email);
if ((userExistsResponse === null || userExistsResponse === void 0 ? void 0 : userExistsResponse.token) !== "0") {
await table.updateAsync(dbName, tableName, {
email: email,
}, updatePayload);
}
else {
const newUser = { email, access_token: updatePayload.access_token };
const createUserResponse = await table.insertAsync(dbName, tableName, [newUser]);
return createUserResponse.success;
}
return true;

@@ -37,5 +41,7 @@ }

}
export async function getAuthDatas() {
export async function getAuthDatas(email) {
try {
const response = await table.selectAsync(dbName, tableName, searchPayload);
const response = await table.selectAsync(dbName, tableName, {
email: email,
});
const { access_token } = JSON.parse(response.message)[0];

@@ -42,0 +48,0 @@ return {

import { Credentials } from "../types/auth";
declare function facebookLogin(credentials: Credentials): Promise<void>;
declare function facebookLogin(credentials: Credentials): Promise<boolean>;
export default facebookLogin;

@@ -13,3 +13,3 @@ import puppeteer from "puppeteer";

};
async function checkConsoleForToken(message) {
async function checkConsoleForToken(email, message) {
if (message.includes("access_token")) {

@@ -19,44 +19,50 @@ const accessToken = message

.split("&data_access_expiration_time")[0];
await updateLoginDatas({ access_token: accessToken });
await updateLoginDatas(email, { access_token: accessToken });
}
}
async function facebookLogin(credentials) {
await createDb();
const browser = await puppeteer.launch({
headless: true,
args: ["--no-sandbox", "--disable-setuid-sandbox"],
});
const page = await browser.newPage();
console.log("login in please wait...");
const login = async () => {
await page.goto(facebookUrl, {
waitUntil: "networkidle2",
try {
await createDb();
const browser = await puppeteer.launch({
headless: false,
args: ["--no-sandbox", "--disable-setuid-sandbox"],
});
page.on("console", async (message) => {
await checkConsoleForToken(message.text());
});
// bypass cookie alert
await page.keyboard.press("Enter");
await delay(1000);
// fill form
await page.waitForSelector("#email");
await page.type("#email", credentials.email);
await page.type("#pass", credentials.password);
await delay(500);
// login
await page.click("#loginbutton");
await page.waitForNavigation();
};
const getToken = async () => {
await page.goto(facebookAuthUrl, {
waitUntil: "networkidle2",
});
// bypass already logged
await page.click('[role="button"]');
await page.waitForNavigation();
};
await login();
await getToken();
await browser.close();
const page = await browser.newPage();
console.log("login in please wait...");
const login = async () => {
await page.goto(facebookUrl, {
waitUntil: "networkidle2",
});
page.on("console", async (message) => {
await checkConsoleForToken(credentials.email, message.text());
});
// bypass cookie alert
await page.keyboard.press("Enter");
await delay(1000);
// fill form
await page.waitForSelector("#email");
await page.type("#email", credentials.email);
await page.type("#pass", credentials.password);
await delay(500);
// login
await page.click("#loginbutton");
await page.waitForNavigation();
};
const getToken = async () => {
await page.goto(facebookAuthUrl, {
waitUntil: "networkidle2",
});
// bypass already logged
await page.click('[role="button"]');
await page.waitForNavigation();
};
await login();
await getToken();
await browser.close();
return true;
}
catch (error) {
return false;
}
}
export default facebookLogin;

@@ -6,4 +6,4 @@ const happnApi = require("./dist/cjs").default;

const facebookCredentials = {
email: "email@gmail.com",
password: "12345",
email: "facebook@gmail.com ",
password: "facebook",
};

@@ -10,0 +10,0 @@

{
"name": "happn-api",
"description": "happn api wrapper for nodejs",
"version": "1.0.1",
"version": "1.0.2",
"author": "christophe bellec",

@@ -6,0 +6,0 @@ "homepage": "https://github.com/christophe77/happn-api",

@@ -8,6 +8,24 @@ import { Credentials } from "../types/auth";

async function withFacebook(credentials: Credentials): Promise<boolean> {
const hasFacebookToken = await getAuthDatas(credentials.email);
if (hasFacebookToken?.token && hasFacebookToken.token !== "0") {
const tokenIsValid = await loginProcess(credentials, true);
if (tokenIsValid) {
return true;
}
return loginProcess(credentials, false);
} else {
return loginProcess(credentials, false);
}
}
async function loginProcess(
credentials: Credentials,
withToken: boolean
): Promise<boolean> {
try {
await facebookLogin(credentials);
const authData = await getAuthDatas();
if (!withToken) {
await facebookLogin(credentials);
}
const authData = await getAuthDatas(credentials.email);
const assertionString = `{"facebook_token":"${authData.token}","mobile_token":"","mobile_id":""}`;

@@ -14,0 +32,0 @@ const datas = {

@@ -9,7 +9,5 @@ import yajdb from "yajdb";

const tableStructure = [
{ name: "id", type: "string" },
{ name: "email", type: "string" },
{ name: "access_token", type: "string" },
];
const defaultValues = [{ id: "1", access_token: "0" }];
const searchPayload = { id: "1" };

@@ -20,6 +18,2 @@ export async function createDb(): Promise<boolean> {

await table.createAsync(dbName, tableName, tableStructure);
const response = await table.selectAsync(dbName, tableName, searchPayload);
if (response.message === "[]" || response.message === "table is empty") {
await table.insertAsync(dbName, tableName, defaultValues);
}
return true;

@@ -30,7 +24,23 @@ } catch {

}
export async function updateLoginDatas(
email: string,
updatePayload: StringMap
): Promise<boolean> {
try {
await table.updateAsync(dbName, tableName, searchPayload, updatePayload);
const userExistsResponse = await getAuthDatas(email);
if (userExistsResponse?.token !== "0") {
await table.updateAsync(
dbName,
tableName,
{
email: email,
},
updatePayload
);
}else{
const newUser = {email, access_token : updatePayload.access_token};
const createUserResponse = await table.insertAsync(dbName, tableName, [newUser]);
return createUserResponse.success;
}
return true;

@@ -41,5 +51,7 @@ } catch {

}
export async function getAuthDatas(): Promise<AuthData> {
export async function getAuthDatas(email: string): Promise<AuthData> {
try {
const response = await table.selectAsync(dbName, tableName, searchPayload);
const response = await table.selectAsync(dbName, tableName, {
email: email,
});
const { access_token } = JSON.parse(response.message)[0];

@@ -46,0 +58,0 @@ return {

@@ -16,3 +16,3 @@ import puppeteer from "puppeteer";

async function checkConsoleForToken(message: string) {
async function checkConsoleForToken(email: string, message: string) {
if (message.includes("access_token")) {

@@ -22,44 +22,49 @@ const accessToken = message

.split("&data_access_expiration_time")[0];
await updateLoginDatas({ access_token: accessToken });
await updateLoginDatas(email, { access_token: accessToken });
}
}
async function facebookLogin(credentials: Credentials) {
await createDb();
const browser = await puppeteer.launch({
headless: true,
args: ["--no-sandbox", "--disable-setuid-sandbox"],
});
const page = await browser.newPage();
console.log("login in please wait...")
const login = async () => {
await page.goto(facebookUrl, {
waitUntil: "networkidle2",
async function facebookLogin(credentials: Credentials): Promise<boolean> {
try {
await createDb();
const browser = await puppeteer.launch({
headless: false,
args: ["--no-sandbox", "--disable-setuid-sandbox"],
});
page.on("console", async (message) => {
await checkConsoleForToken(message.text());
});
// bypass cookie alert
await page.keyboard.press("Enter");
await delay(1000);
// fill form
await page.waitForSelector("#email");
await page.type("#email", credentials.email);
await page.type("#pass", credentials.password);
await delay(500);
// login
await page.click("#loginbutton");
await page.waitForNavigation();
};
const getToken = async () => {
await page.goto(facebookAuthUrl, {
waitUntil: "networkidle2",
});
// bypass already logged
await page.click('[role="button"]');
await page.waitForNavigation();
};
await login();
await getToken();
await browser.close();
const page = await browser.newPage();
console.log("login in please wait...");
const login = async () => {
await page.goto(facebookUrl, {
waitUntil: "networkidle2",
});
page.on("console", async (message) => {
await checkConsoleForToken(credentials.email, message.text());
});
// bypass cookie alert
await page.keyboard.press("Enter");
await delay(1000);
// fill form
await page.waitForSelector("#email");
await page.type("#email", credentials.email);
await page.type("#pass", credentials.password);
await delay(500);
// login
await page.click("#loginbutton");
await page.waitForNavigation();
};
const getToken = async () => {
await page.goto(facebookAuthUrl, {
waitUntil: "networkidle2",
});
// bypass already logged
await page.click('[role="button"]');
await page.waitForNavigation();
};
await login();
await getToken();
await browser.close();
return true;
} catch (error) {
return false;
}
}
export default facebookLogin;
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc