mirror of
https://gitlab.com/comunic/comunicterm
synced 2024-12-26 05:28:54 +00:00
Can perform basic login
This commit is contained in:
parent
2994919cc6
commit
9488cd27a5
@ -10,11 +10,13 @@ SOURCES += \
|
|||||||
api_request.cpp \
|
api_request.cpp \
|
||||||
apiresponse.cpp \
|
apiresponse.cpp \
|
||||||
loginscreen.cpp \
|
loginscreen.cpp \
|
||||||
ui_utils.cpp
|
ui_utils.cpp \
|
||||||
|
helpers/accounthelper.cpp
|
||||||
|
|
||||||
HEADERS += \
|
HEADERS += \
|
||||||
config.h \
|
config.h \
|
||||||
api_request.h \
|
api_request.h \
|
||||||
apiresponse.h \
|
apiresponse.h \
|
||||||
loginscreen.h \
|
loginscreen.h \
|
||||||
ui_utils.h
|
ui_utils.h \
|
||||||
|
helpers/accounthelper.h
|
||||||
|
56
helpers/accounthelper.cpp
Normal file
56
helpers/accounthelper.cpp
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
#include "accounthelper.h"
|
||||||
|
|
||||||
|
#include "../api_request.h"
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
int AccountHelper::mUserID = -1;
|
||||||
|
string AccountHelper::mToken1;
|
||||||
|
string AccountHelper::mToken2;
|
||||||
|
|
||||||
|
|
||||||
|
AccountHelper::AccountHelper()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
LoginResult AccountHelper::Login(const std::string &email, const std::string &pass)
|
||||||
|
{
|
||||||
|
auto request = ApiRequest("user/connectUSER", false);
|
||||||
|
request.addArg("userMail", email);
|
||||||
|
request.addArg("userPassword", pass);
|
||||||
|
|
||||||
|
const auto result = request.exec();
|
||||||
|
|
||||||
|
// Check for error
|
||||||
|
switch (result.code()) {
|
||||||
|
case 401:
|
||||||
|
return LoginResult::BAD_PASSWORD;
|
||||||
|
case 429:
|
||||||
|
return LoginResult::TOO_MANY_ATTEMPTS;
|
||||||
|
case 200:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return LoginResult::ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Save the tokens
|
||||||
|
const auto tokens = result.object().at("tokens").as_object();
|
||||||
|
AccountHelper::mToken1 = tokens.at("token1").as_string();
|
||||||
|
AccountHelper::mToken2 = tokens.at("token2").as_string();
|
||||||
|
|
||||||
|
return SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
int AccountHelper::userID()
|
||||||
|
{
|
||||||
|
return mUserID;
|
||||||
|
}
|
||||||
|
|
||||||
|
vector<string> AccountHelper::loginTokens()
|
||||||
|
{
|
||||||
|
auto tokens = vector<string>();
|
||||||
|
tokens.push_back(AccountHelper::mToken1);
|
||||||
|
tokens.push_back(AccountHelper::mToken2);
|
||||||
|
return tokens;
|
||||||
|
}
|
36
helpers/accounthelper.h
Normal file
36
helpers/accounthelper.h
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
/**
|
||||||
|
* Account helper
|
||||||
|
*
|
||||||
|
* @author Pierre HUBERT
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
enum LoginResult {
|
||||||
|
ERROR,
|
||||||
|
BAD_PASSWORD,
|
||||||
|
TOO_MANY_ATTEMPTS,
|
||||||
|
SUCCESS
|
||||||
|
};
|
||||||
|
|
||||||
|
class AccountHelper
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
AccountHelper();
|
||||||
|
|
||||||
|
static LoginResult Login(const std::string &email,
|
||||||
|
const std::string &pass);
|
||||||
|
|
||||||
|
|
||||||
|
static int userID();
|
||||||
|
|
||||||
|
static std::vector<std::string> loginTokens();
|
||||||
|
|
||||||
|
private:
|
||||||
|
static int mUserID;
|
||||||
|
static std::string mToken1;
|
||||||
|
static std::string mToken2;
|
||||||
|
};
|
@ -4,6 +4,8 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
|
#include <helpers/accounthelper.h>
|
||||||
|
|
||||||
#include "loginscreen.h"
|
#include "loginscreen.h"
|
||||||
#include "ui_utils.h"
|
#include "ui_utils.h"
|
||||||
|
|
||||||
@ -28,14 +30,39 @@ bool LoginScreen::exec()
|
|||||||
cbreak(); /* Line buffering disabled. pass on everything */
|
cbreak(); /* Line buffering disabled. pass on everything */
|
||||||
|
|
||||||
|
|
||||||
string email, password;
|
LoginResult res;
|
||||||
getCredentials(email, password);
|
do {
|
||||||
|
string email, password;
|
||||||
|
getCredentials(email, password);
|
||||||
|
|
||||||
mvprintw(3,0, "Done!");
|
res = AccountHelper::Login(email, password);
|
||||||
|
clear();
|
||||||
|
|
||||||
|
switch(res) {
|
||||||
|
case ERROR:
|
||||||
|
ui_utils::alert(stdscr, "An error occured while trying to sign in!");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case TOO_MANY_ATTEMPTS:
|
||||||
|
ui_utils::alert(stdscr, "Too many attempt! Please try again later...");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case BAD_PASSWORD:
|
||||||
|
ui_utils::alert(stdscr, "Email / password invalid!");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SUCCESS:
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
} while(res != SUCCESS);
|
||||||
|
|
||||||
|
|
||||||
getch(); /* Wait for user input */
|
getch(); /* Wait for user input */
|
||||||
endwin(); /* End curses mode */
|
endwin(); /* End curses mode */
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void LoginScreen::getCredentials(string &email, string &pass)
|
void LoginScreen::getCredentials(string &email, string &pass)
|
||||||
|
Loading…
Reference in New Issue
Block a user