Exemple #1
0
JNIEXPORT jstring JNICALL Java_com_mypasswords7_gui_embeddedweb_LoginProfile_nativeGenToken
(JNIEnv *env, jobject obj, jstring jpassword, jstring jtimestamp) {

    const char* password = (*env)->GetStringUTFChars(env, jpassword, NULL);
    const char* timestamp = (*env)->GetStringUTFChars(env, jtimestamp, NULL);    
    
    printf("%s\n%s", password, timestamp);
    printf("\n%d %d", strlen(password), strlen(timestamp));
    
    const char* charResult = genToken(password, timestamp);

    jstring result = (*env)->NewStringUTF(env, charResult);     
    return result;
}
Exemple #2
0
void msg_login_handler(int socket, mensagem_s *msg)
{
	//header + str + str
	if (msg->size < HEADER_SIZE + 1 + 1)
	{
		disconnect(socket);
		return;
	}

	fprintf(stdout, "MENSAGEM: CMSG_LOGIN\n");
	char *username = msg_recv_string(msg);
	char *password = msg_recv_string(msg);

	mensagem_s * s = preparePacket(SMSG_LOGIN_RESPONSE);
	Utilizador * c = GetCliente(username);
	if (c)
	{
		if (c->congelada)
		{
			msg_put_short(ERROR_CODE_CONTA_CONGELADA, s);
		}
		else if (strcmp(password, c->password) == 0)
		{
			Session *session = malloc(sizeof(Session));
			session->cliente = c;
			session->token = genToken();
			session->sessionExpire = time(NULL) + 1 *60 * 10;
			SessionAdd(session);

			msg_put_short(ERROR_CODE_SUCCESS, s);
			msg_put_int(session->token, s);
			msg_put_byte(c->flags, s);
		}
		else
		{
			msg_put_short(ERROR_CODE_NOME_UTILIZADOR_OU_PASS_INVALIDA, s);
		}
	}
	else
	{
		msg_put_short(ERROR_CODE_NOME_UTILIZADOR_OU_PASS_INVALIDA, s);
	}

	free(username);
	free(password);
	finalizePacket(s);
	sendData(socket, s);
	free(s);
}
Exemple #3
0
JNIEXPORT jint JNICALL Java_com_mypasswords7_gui_embeddedweb_LoginProfile_nativeCheckToken
(JNIEnv *env, jobject obj, jstring jtoken, jstring jpassword, jstring jtimestamp) {

    const char* password = (*env)->GetStringUTFChars(env, jpassword, NULL);
    const char* timestamp = (*env)->GetStringUTFChars(env, jtimestamp, NULL);
    const char* currentToken = (*env)->GetStringUTFChars(env, jtoken, NULL);

    printf(" ");
    
    const char* token = genToken(password, timestamp);
    int compare = strcmp(token, currentToken);

    jint result = compare == 0 ? 1 : 0;
    return result;
}
// Define all requests here
/// POST: /login
RequestResult Request_POST_Login(Database* db, const std::string& uriparams, const std::string& qparams, const std::string& body) {
	RequestResult ret;
	// Parse and check credentials
	auto js = JSONParse(body);
	const std::string usr_id = js.get("id", "").asString();
	const std::string pwd = js.get("password", "").asString();
	Usuario usr;
	if(db->loadUsuario(usr_id, usr) && usr.password == pwd) {
		usr.last_action = std::time(nullptr);
		usr.token = genToken();
		db->saveUsuario(usr);
		ret.data = std::string("{ \"token\": \"") + usr.token + usr.nombre + "\" }";
		ret.code = 201;
	}else{
		ret.data = "{ \"error\": \"Usuario o clave invalidos\" }";
		ret.code = 401;
	}
	return ret;
}