diff --git a/coregrade/etc/coregrade_api.conf b/coregrade/etc/coregrade_api.conf index 54fcbea..c041ce3 100644 --- a/coregrade/etc/coregrade_api.conf +++ b/coregrade/etc/coregrade_api.conf @@ -16,7 +16,7 @@ database: port = 5432; }; -mailsend: +mailsendBAK: { from = "savvy@chiefsoft.com"; server = "smtp.google.com"; @@ -26,10 +26,11 @@ mailsend: name = "CoreGrade Beta"; }; -mailsendBAK: +mailsend: { - from = "demo@coregrade.com"; - server = "virtualmail.chiefsoft.com"; + from = "support@coregrade.com"; +# server = "virtualmail.chiefsoft.com"; + server = "10.0.0.23"; domain = "coregrade.com"; user = "support@coregrade.com"; pass = "may12002!x"; diff --git a/coregrade/src/shared_tool/account.cc b/coregrade/src/shared_tool/account.cc index 3b6a571..240714c 100644 --- a/coregrade/src/shared_tool/account.cc +++ b/coregrade/src/shared_tool/account.cc @@ -15,6 +15,8 @@ #define CREATE_BY_EMAIL 1000 #define CREATE_BY_PHONE 2000 +long CreateDefaultPage(CVars in, CVars &out); + struct MemoryStruct { char *memory; size_t size; @@ -142,12 +144,14 @@ long SessionCheck(long uid, const char *sessionid, int create) { return -1L; // Invalif parameters } // Clean old sessions - pgsql_exec("DELETE FROM members_session WHERE member_id=%ld AND updated < (now() - interval '15 minutes')", uid); + pgsql_exec("DELETE FROM members_session WHERE member_id=%ld AND updated < (now() - interval '35 minutes')", uid); // Update/check existing session if (create == 0 && pgsql_exec("UPDATE members_session SET updated=NOW() WHERE member_id=%ld AND session='%s'", uid, sessionid) > 0) { return 1L; // Session updated } if (create > 0) { + + pgsql_exec("DELETE FROM members_session WHERE member_id=%ld", uid); // Check session i? const PGresult *res = pgsql_query("SELECT * FROM members_session WHERE member_id=%ld AND session<>'%s'", uid, sessionid); if (res != NULL && pgsql_num_rows(res) > 0) { @@ -180,13 +184,18 @@ long LoginCoreGradeAccount(CVars in, CVars &out) { REQ_STRING(in, "password", 5, 49, "(.*)"); REQ_STRING(in, "sessionid", 4, 40, "(.*)"); OPTIONAL(in, "loc") REQ_STRING(in, "loc", 3, 15, "(.*)"); - - + + ret = load_db_record(out, "SELECT UPPER( md5( now()::text ) ) AS sessionid, *,id AS member_id FROM members WHERE status=1 AND LOWER(username)=LOWER('%s') AND password= md5('%s')", in["username"].c_str(), in["password"].c_str()); if (ret) { if (SessionCheck(out["member_id"].Long(), out["sessionid"].c_str(), 1) > 0) { out["stauts"] = "OK"; + CVars y, z; + y["member_id"] = out["member_id"]; + y["member_id"].set_valid(true); + + CreateDefaultPage(y, z); ret = PHP_API_OK; } else { out["status"] = "Session check failed"; @@ -220,9 +229,9 @@ long CreateCoreGradeAccountPending(CVars in, CVars &out) { ALTER TABLE ONLY members_pending ADD CONSTRAINT members_pending_id_key UNIQUE (id); */ - - - + + + REQ_STRING(in, "username", 5, 49, "(.*)"); REQ_STRING(in, "firstname", 2, 49, "(.*)"); REQ_STRING(in, "lastname", 2, 49, "(.*)"); @@ -289,6 +298,69 @@ long CreateCoreGradeAccountPending(CVars in, CVars &out) { } //****************************************************************************** +long CreateDefaultPage(CVars in, CVars &out) { + + logfmt(logINFO, "CreateDefaultPage()"); + long ret = PHP_API_BAD_PARAM; + long member_id = REQ_LONG(in, "member_id", 1, -1); + + const char *loc = getenv("REMOTE_ADDR"); + try { + + load_db_record(out, "SELECT 'PG'|| UPPER( md5( now()::text ) ) AS page_key"); + + // long lonkF = load_db_record(out, "SELECT *,id AS pending_id FROM members_pages WHERE member_id = %lu AND page_mode='DEFAULT' ", in["member_id"].Long()); + + const PGresult* res = pgsql_query("SELECT id FROM members_pages WHERE member_id = %lu AND page_mode='DEFAULT' ", in["member_id"].Long()); + int rcc= pgsql_num_rows(res); + if (rcc == 0) { + + + CVars x; + x["member_id"] = member_id; + x["member_id"].set_valid(true); + x["page_key"] = out["page_key"]; + x["page_key"].set_valid(true); + x["page_mode"] = "DEFAULT"; + x["page_mode"].set_valid(true); + x["title"] = "My default page."; + x["title"].set_valid(true); + + ret = insert_db_record(DBS_VALID, "members_pages", "members_pages_id_seq", x); + + if (ret > 0) { + + // AccountPendingMail(x); welcome email + } + + } + + + + } catch (bad_parameter) { + out["status"] = "ERROR"; + } + + logfmt(logINFO, "/CreateDefaultPage()"); + return ret; + +} +/* + + CREATE TABLE members_pages ( + id SERIAL, + member_id INT REFERENCES members(id), + page_mode VARCHAR(15), + page_key VARCHAR(150) UNIQUE NOT NULL, + title VARCHAR(50), + status integer DEFAULT 1, + added timestamp without time zone DEFAULT now() +); +ALTER TABLE ONLY members_pages + ADD CONSTRAINT members_pages_id_key UNIQUE (id); + */ +//***************************************************************************** + long CreateCoreGradeAccount(CVars in, CVars &out) { logfmt(logINFO, "CreateCoreGradeAccount()"); long ret = PHP_API_BAD_PARAM; @@ -326,7 +398,7 @@ long CreateCoreGradeAccount(CVars in, CVars &out) { // pgsql_query("UPDATE members SET password = md5('%s') WHERE id = %lu", in["pass1"].c_str(), ret); pgsql_query("UPDATE members_pending SET status = 5,verified=now() WHERE id = %lu", out["pending_id"].Long()); - // AccountPendingMail(x); welcome email + // AccountPendingMail(x); welcome email }