Skip to content

Instantly share code, notes, and snippets.

@KugiHaito
Last active July 7, 2017 20:09
Show Gist options
  • Save KugiHaito/19c3ae72da1fd5536e7ee128d2f93597 to your computer and use it in GitHub Desktop.
Save KugiHaito/19c3ae72da1fd5536e7ee128d2f93597 to your computer and use it in GitHub Desktop.
Login e Cadastro de usuário, com registro persistente(Local)
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
using namespace std;
#ifdef WIN32
char clear[10] = "cls";
#else
char clear[10] = "clear";
#endif
char error[50]; // exibição de errors
char message[50] = "other"; // exibição de mensagens
char nick[100]; // nome do usuario
char pass[100]; // senha do usuario
char rpas[100]; // confirmação de senha
FILE *fname; // arquivo name.txt
FILE *fpass; // arquivo pswd.txt
char dname[100]; // recebe valor salvo
char dpass[100]; // recebe valor salvo
char n_command[150]; // comando para salvar
char p_command[150]; // conando para salvar
char option[15];
/*** Model Functions */
/**
* Salvar dados..
* @param name nome do usuario
* @param pass senha do usuario
*/
void save(char name[],char pass[]){
sprintf(n_command, "echo %s >> name.txt", name);
sprintf(p_command, "echo %s >> pswd.txt", pass);
system(n_command);
system(p_command);
}
/*** View Functions */
/**
* Mensagens de erro e concluido!
*/
void message_welcome(char message[], char name[100] = nick){
if(!strcmp(message, "register")) {
cout << " =========================================================================" << endl;
cout << " CLogin | Cadastre-se " << endl;
cout << " =========================================================================" << "\n" << endl;
}
else if(!strcmp(message, "login")) {
cout << " =========================================================================" << endl;
cout << " CLogin | Login " << endl;
cout << " =========================================================================" << "\n" << endl;
} else if(!strcmp(message, "welcome")) {
cout << " =========================================================================" << endl;
cout << " CLogin " << name;
cout << " =========================================================================" << "\n" << endl;
cout << endl << " 1 - Deletar Cadastro" << endl << " 2 - Sair" << endl << endl;
} else {
cout << " =========================================================================" << endl;
cout << " CLogin " << endl;
cout << " =========================================================================" << "\n" << endl;
}
}
void message_error(char message[]){
system(clear);
if(!strcmp(message, "passnotrpas")) {
cout << " :------------------------------------------------------------------------:" << endl;
cout << " : [ERROR] Senhas não coincidem x :" << endl;
cout << " :------------------------------------------------------------------------:" << "\n" << endl;
} else if (!strcmp(message, "error")) {
cout << " :------------------------------------------------------------------------:" << endl;
cout << " : [ERROR] Nick e/ou Senha Incorreto(s) x :" << endl;
cout << " :------------------------------------------------------------------------:" << "\n" << endl;
} else {
cout << " :------------------------------------------------------------------------:" << endl;
cout << " : [ERROR] Ocorreu um erro! :( x :" << endl;
cout << " :------------------------------------------------------------------------:" << "\n" << endl;
}
}
/*** Controller Functions */
/**
* Pagina de Bem Vindo
*/
void access_welcome(){
system(clear);
char message[50] = "welcome";
message_welcome(message);
cout << " Escolha uma opção: ";
cin.getline (option, 15);
if(!strcmp(option, "1")) {
/* deletar cadastro */
char delet[3];
cout << " [*] Deseja realmente deletar seu cadastro? [s/n]: ";
cin >> delet;
if(!strcmp(delet, "s") or !strcmp(delet, "sim")) {
cout << " Apagando cadastro.." << endl;
remove("name.txt");
remove("pswd.txt");
sleep(2);
exit(0);
} else {
cout << " [x] Ocorreu um erro!" << endl;
sleep(2);
exit(0);
}
} else if(!strcmp(option, "2")){
char exit[3];
cout << endl << " [*] Tem certeza que deseja sair? [s/n]: ";
cin >> exit;
if(!strcmp(exit, "s") or !strcmp(exit, "sim")) {
abort();
} else {
access_welcome();
}
}
}
/**
* Acessar Pagina de Login
*/
void acccess_login(){
char message[50] = "login";
message_welcome(message);
cout << endl << " [@] Digite seu Nick: ";
cin.getline (nick, 100);
cout << " [+] Digite sua Senha: ";
cin.getline (pass, 100);
// Abrir dados..
fname = fopen("name.txt", "rt");
fpass = fopen("pswd.txt", "rt");
// desbug
sprintf(nick, "%s\n", nick);
sprintf(pass, "%s\n", pass);
// ler dados..
int i = 0;
while(!feof(fname) and i == 0) {
fgets(dname, 100, fname);
fgets(dpass, 100, fpass);
while(dname != NULL) {
if(i == 0) {
if(!strcmp(dname, nick) and !strcmp(dpass, pass)) {
access_welcome();
} else {
char error[50] = "error";
char message[50] = "login";
message_error(error);
acccess_login();
}
}
}
}
fclose(fname);
fclose(fpass);
}
/**
* Acessar pagina de cadastro
*/
void access_register(){
char message[50] = "register";
message_welcome(message);
// Obtendo valores
cout << " [@] Digite seu Nick: ";
cin.getline (nick,100);
cout << " [+] Digite sua Senha: ";
cin.getline (pass,100);
cout << " [+] Repite sua Senha: ";
cin.getline (rpas,100);
// analizando..
if(!strcmp(pass, rpas)) {
system(clear);
save(nick, pass);
acccess_login();
} else {
char message[50] = "register";
message_welcome(message);
char error[50] = "passnotrpas";
message_error(error);
int i = 0;
while(i == 0) {
cout << " [+] Digite sua Senha: ";
cin.getline (pass,100);
cout << " [+] Repite sua Senha: ";
cin.getline (rpas,100);
if(!strcmp(pass, rpas)){
save(nick, pass);
system(clear);
acccess_login();
}
}
}
}
/**
* Login e cadastro de Usuario com Dados permantes
* @return int
*/
int main(int argc, char const *argv[])
{
system(clear);
if(!fopen("name.txt", "rt") and !fopen("pswd.txt", "rt")) {
access_register();
} else {
acccess_login();
}
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment