Finish user interactive logic (still need to abstract it out)

This commit is contained in:
Jordan Bancino 2022-12-15 22:04:30 +00:00
parent f475cac601
commit 1273d87df9
1 changed files with 24 additions and 3 deletions

View File

@ -57,6 +57,9 @@ ROUTE_IMPL(RouteRegister, args)
char *pathPart = NULL;
DbRef *ref;
HashMap *persist;
if (MATRIX_PATH_PARTS(args->path) == 0)
{
JsonValue *auth = NULL;
@ -91,9 +94,10 @@ ROUTE_IMPL(RouteRegister, args)
if (!auth)
{
char *session = UtilRandomString(24);
DbRef *ref = DbCreate(args->matrixArgs->db, 2,
ref = DbCreate(args->matrixArgs->db, 2,
"user_interactive", session);
HashMap *persist = DbJson(ref);
persist = DbJson(ref);
HashMapSet(persist, "created",
JsonValueInteger(UtilServerTs()));
@ -141,6 +145,23 @@ ROUTE_IMPL(RouteRegister, args)
}
/* Check to see if session exists */
ref = DbLock(args->matrixArgs->db, 2,
"user_interactive", sessionStr);
if (!ref)
{
HttpResponseStatus(args->context, HTTP_BAD_REQUEST);
response = MatrixErrorCreate(M_UNKNOWN);
goto finish;
}
/* We only need to know that it exists. */
DbUnlock(args->matrixArgs->db, ref);
DbDelete(args->matrixArgs->db, 2,
"user_interactive", sessionStr);
/* TODO: Abstract all the above logic out to a function */
/* TODO: Register new user here */
finish:
JsonFree(request);
@ -161,7 +182,7 @@ finish:
response = MatrixErrorCreate(M_MISSING_PARAM);
}
/* TODO: Check if ?username=x is available */
/* TODO: Check if username is available */
}
else if (HttpRequestMethodGet(args->context) == HTTP_POST &&
(MATRIX_PATH_EQUALS(pathPart, "email") ||