diff --git a/wrenchboard/src/include/wrenchboard_api.h b/wrenchboard/src/include/wrenchboard_api.h index 7074890d..986eb6d7 100644 --- a/wrenchboard/src/include/wrenchboard_api.h +++ b/wrenchboard/src/include/wrenchboard_api.h @@ -20,6 +20,11 @@ enum { PARTNER_STRIPE }; #define OFFER_EXPIRE 444 #define OFFER_SENDTOME 777 +#define WEBSITE_LOGIN 1100 +#define MOBILE_LOGIN 1101 +#define FACEBOOK_LOGIN 1102 +#define APPLE_LOGIN 1103 +#define GOOGLE_LOGIN 1104 #define CONTRACT_CANCEL_CONTRACT 7 #define CONTRACT_EXTEND_TIMELINE 9 diff --git a/wrenchboard/src/shared_tool/account.cc b/wrenchboard/src/shared_tool/account.cc index f484c56f..9cc353c6 100644 --- a/wrenchboard/src/shared_tool/account.cc +++ b/wrenchboard/src/shared_tool/account.cc @@ -108,6 +108,7 @@ status INT DEFAULT 1, created timestamp without time zone DEFAULT now() ); */ +long LoginLogger( long member_id, long login_mode); long WrenchBoardMobileSendMoney(CVars in, CVars &out); long WrenchBoardMobileSendJobInterest(CVars in, CVars &out); long WrenchReturnPendingJobList(CVars in, CVars &out); @@ -1238,7 +1239,45 @@ long SessionCheck(long uid, const char *sessionid, int create) { return 0L; // No route } - +/* +CREATE TABLE mobile_login ( + id SERIAL, + member_id INT REFERENCES members(id) UNIQUE NOT NULL, + added timestamp without time zone DEFAULT now(), + updated timestamp without time zone DEFAULT now() + ); +ALTER TABLE ONLY mobile_login + ADD CONSTRAINT mobile_login_id_key UNIQUE (id); +*/ +long LoginLogger( long member_id, long login_mode){ + CVars sess; + long ret = 0; + try { + switch( login_mode ){ + case MOBILE_LOGIN: + if (load_db_record(sess, "SELECT * FROM mobile_login WHERE member_id=%lu", member_id) > 0) { + pgsql_exec("UPDATE mobile_login SET updated=NOW() WHERE member_id=%ld", member_id); + }else{ + sess["member_id"] = member_id; + sess["member_id"].set_valid(true); + insert_db_record(DBS_VALID, "mobile_login", "mobile_login_id_seq", sess); //members_session_id_seq + } + break; + } + + + } catch (bad_parameter) { + ret = PHP_API_BAD_PARAM; + } + return ret; +} +/* +#define WEBSITE_LOGIN 1100 +#define MOBILE_LOGIN 1101 +#define FACEBOOK_LOGIN 1102 +#define APPLE_LOGIN 1103 +#define GOOGLE_LOGIN 1104 +*/ long LoginWrenchBoardAccount(CVars in, CVars &out) { long ret = PHP_API_BAD_PARAM; @@ -1247,6 +1286,8 @@ long LoginWrenchBoardAccount(CVars in, CVars &out) { REQ_STRING(in, "password", 5, 49, "(.*)"); REQ_STRING(in, "sessionid", 4, 140, "(.*)"); OPTIONAL(in, "loc") REQ_STRING(in, "loc", 3, 15, "(.*)"); +// $in["login_mode"] = MOBILE_LOGIN; + long login_mode = REQ_LONG(in, "login_mode", 0, -1); const char * loc = getenv("REMOTE_ADDR"); in["loc"] = loc; @@ -1277,6 +1318,7 @@ long LoginWrenchBoardAccount(CVars in, CVars &out) { pgsql_query("UPDATE members SET last_login = now() , loc='%s' WHERE id = %lu",loc, out["member_id"].Long()); account_email(ACCOUNT_LOGIN_ALERT, out, out); // ALERT CUSTOMER OF LOGIN ret = PHP_LOGIN_OK; + LoginLogger(out["member_id"].Long(),login_mode); } else { out["status"] = "Session check failed"; }