#include <ArduinoJson.h>
String hashing(String d)
{
char aa[] = {"QWERTYUIOPASDFGHJKLZXCVBNM1234567890!@#$%^&*()_-+=,<.>/?;:\'\"[{ |}]"};
char bb[] = {"QWERTYUIOPASDFGHJKLZXCVBNM"};
//Serial.println(sizeof(aa)); = 67
for (int i = 0; i < 67; ++i) {
d.toUpperCase();
d.replace(aa[i], bb[random(0, 25)]);
}
return d;
}
class Users {
public:
typedef struct
{
int n;
String name;
String email;
String phone;
String password;
unsigned long id;
String hash;
} key; key list[999];
//[#n,name,email,phone,password,id,hash],
// String inumem = rfile("/u");
String inumem = "[[0],[1,0,0,0,0,0,0],[2,\"kk\",\"[email protected]\",0,\"uu\",0,\"hash\"],[3,0,0,0,0,0,0],[4,0,0,0,0,0,0],[5,0,0,0,0,0,0]]";
void begin() {
if (inumem) {
JsonDocument doc;
deserializeJson(doc, inumem);
for (int i = 1; i < 6; ++i) { //Serial.println(i);
list[i].n = doc[i][0].as<int>();
list[i].name = doc[i][1].as<String>();
list[i].email = doc[i][2].as<String>();
list[i].phone = doc[i][3].as<String>();
list[i].password = doc[i][4].as<String>();
list[i].id = doc[i][5].as<unsigned long>();
list[i].hash = doc[i][6].as<String>();
}
p(inumem);
} else {
p("/u not found ");
}
}
void save(int i) {
String bs ;
JsonDocument oc;
deserializeJson(oc, inumem);
oc[i][1] = list[i].name ;
oc[i][2] = list[i].email;
oc[i][3] = list[i].phone;
oc[i][4] = list[i].password;
oc[i][5] = list[i].id;
oc[i][6] = list[i].hash;
serializeJson(oc, bs);
//serializeJsonPretty(oc, bs);
Serial.println(bs); // to memory
//begin();
}
int login(String e, String p) {
for (int i = 1; i < 6; ++i) { //Serial.println(i);
if (list[i].email == e) {
if (list[i].password == p) {
list[i].hash = hashing( p + e);
save(list[i].n);
return list[i].n;
} else {
return 400; // wrong passord 400
break;
}
} else if (i == 5) {
return 0; //wrong email
break;
}
}
}
int alogin(String h) {
for (int i = 1; i < 6; ++i) { //Serial.println(i);
if (list[i].hash == h) {
return list[i].n;
} else if (i == 5) {
return 0; //hash
break;
}
}
}
int regist(String n, String e, String ph, String p) {
for (int i = 1; i < 6; ++i) { //Serial.println(i);
if (list[i].email == "0") {
list[i].name = n ;
list[i].email = e ;
list[i].phone = ph;
list[i].password = p;
save(list[i].n);
return list[i].n;
} else if (i == 5) {
return 99; // full user
break;
}
}
}
///////
// Getter
};
Users user ;
void setup() {
Serial.begin(115200); //Serial.println(hashing("[email protected]", "kshdhdd"));
user.begin();
//Serial.println(user.alogin("hash"));
Serial.println(user.regist("kawa", "[email protected]", "7770709696", "K34@f RV"));
Serial.println(user.login("[email protected]", "K34@f RV"));
}
void loop() {
delay(10);
}