int openid_create_user_via_sri(char *claimed_id, HashList *sri_keys)
{
char *desired_name = NULL;
+ char new_password[32];
if (config.c_auth_mode != AUTHMODE_NATIVE) return(1);
if (config.c_disable_newu) return(2);
/* The desired account name is available. Create the account and log it in! */
if (create_user(desired_name, 1)) return(6);
+ snprintf(new_password, sizeof new_password, "%08lx%08lx", random(), random());
+ CtdlSetPassword(new_password);
attach_openid(&CC->user, claimed_id);
return(0);
}
+// FIXME we still have to set up the vCard
// identity = [50] http://uncensored.citadel.org/~ajc/MyID.config.php
// sreg.nickname = [17] IGnatius T Foobar
cdb_free(cdboi);
if (!getuserbynumber(&CC->user, usernum)) {
+ /* Now become the user we just created */
+ safestrncpy(CC->curr_user, CC->user.fullname, sizeof CC->curr_user);
do_login();
return(0);
}
/*
* session startup code which is common to both cmd_pass() and cmd_newu()
*/
-void session_startup(void)
+void do_login(void)
{
+ CC->logged_in = 1;
CtdlLogPrintf(CTDL_NOTICE, "<%s> logged in\n", CC->curr_user);
lgetuser(&CC->user, CC->curr_user);
}
-void do_login()
-{
- (CC->logged_in) = 1;
- session_startup();
-}
-
-
int CtdlTryPassword(char *password)
{
int code;
/* Now become the user we just created */
memcpy(&CC->user, &usbuf, sizeof(struct ctdluser));
safestrncpy(CC->curr_user, username, sizeof CC->curr_user);
- CC->logged_in = 1;
+ do_login();
/* Check to make sure we're still who we think we are */
if (getuser(&CC->user, CC->curr_user)) {
a = create_user(username, 1);
if (a == 0) {
- session_startup();
logged_in_response();
} else if (a == ERROR + ALREADY_EXISTS) {
cprintf("%d '%s' already exists.\n",
}
+/*
+ * set password - back end api code
+ */
+void CtdlSetPassword(char *new_pw)
+{
+ lgetuser(&CC->user, CC->curr_user);
+ safestrncpy(CC->user.password, new_pw, sizeof(CC->user.password));
+ lputuser(&CC->user);
+ CtdlLogPrintf(CTDL_INFO, "Password changed for user <%s>\n", CC->curr_user);
+ PerformSessionHooks(EVT_SETPASS);
+}
+
/*
- * set password
+ * set password - citadel protocol implementation
*/
void cmd_setp(char *new_pw)
{
cprintf("%d Password unchanged.\n", CIT_OK);
return;
}
- lgetuser(&CC->user, CC->curr_user);
- safestrncpy(CC->user.password, new_pw, sizeof(CC->user.password));
- lputuser(&CC->user);
+
+ CtdlSetPassword(new_pw);
cprintf("%d Password changed.\n", CIT_OK);
- CtdlLogPrintf(CTDL_INFO, "Password changed for user <%s>\n", CC->curr_user);
- PerformSessionHooks(EVT_SETPASS);
}
serv_printf("PASS %s", bstr("pass"));
serv_getln(buf, sizeof buf);
if (buf[0] == '2') {
- become_logged_in(bstr("name"),
- bstr("pass"), buf);
+ become_logged_in(bstr("name"), bstr("pass"), buf);
} else {
display_login(&buf[4]);
return;
else if (linecount == 2) {
safestrncpy(password, buf, sizeof password);
}
- else if (linecount == 2) {
+ else if (linecount == 3) {
safestrncpy(logged_in_response, buf,
sizeof logged_in_response);
}