Guest User

Register&Login system

a guest
Jun 2nd, 2013
2,497
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <a_samp>
  2. #include <DOF2>
  3. #define MAILER_URL "freesub.comuf.com/mailer.php"
  4. #include <Email>
  5. #include <regex>
  6.  
  7. enum Pi
  8. {
  9.     PName[MAX_PLAYER_NAME],
  10.     File[64],
  11.     IP[16],
  12.     bool:PlayerLogin,
  13.     Code
  14. }
  15. new pInfo[MAX_PLAYERS][Pi], String[184];
  16.  
  17. #define GetName(%0)                     pInfo[%0][PName]
  18. #define PFile(%0)                       pInfo[%0][File]
  19. #define KickEx(%0)                      SetTimerEx("KickPlayer", 50, false, "i", %0)
  20. #define GetPIP(%0)                      pInfo[%0][IP]
  21. #define IsValidEmail(%1) \
  22.     regex_match(%1, "[a-zA-Z0-9_\\.]+@([a-zA-Z0-9\\-]+\\.)+[a-zA-Z]{2,4}")
  23.  
  24. // Dialogs
  25. #define DIALOG_REGISTER                 100
  26. #define DIALOG_LOGIN                    101
  27. #define DIALOG_EMAIL                    102
  28. #define DIALOG_MESSAGES                 103
  29. #define DIALOG_CEMAIL                   104
  30.  
  31. public OnPlayerConnect(playerid)
  32. {
  33.     GetPlayerName(playerid, GetName(playerid), MAX_PLAYER_NAME);
  34.     format(PFile(playerid), sizeof pInfo, "Users/%s.ini", GetName(playerid));
  35.     GetPlayerIp(playerid, GetPIP(playerid), 16);
  36.     if(!DOF2_FileExists(PFile(playerid)))
  37.     ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Register", "Welcome !\nThe system not found your a registered user.\nType your password in the box.", "Continuation", "Cancel");
  38.     else if(DOF2_FileExists(PFile(playerid)) && !strcmp(GetPIP(playerid), DOF2_GetString(PFile(playerid), "IP"), false))
  39.     {
  40.         pInfo[playerid][PlayerLogin] = true;
  41.         ShowPlayerDialog(playerid, DIALOG_MESSAGES, DIALOG_STYLE_MSGBOX, "Auto Login", "Welcome !\nYou've been auto-logged in. [IP match]", "Ok", "");
  42.     } else if(DOF2_FileExists(PFile(playerid)))
  43.         return ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login", "Welcome !\nPlease enter your password.", "Login", "Restore Password");
  44.     return true;
  45. }
  46.  
  47. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  48. {
  49.     if(response)
  50.     {
  51.         switch(dialogid)
  52.         {
  53.             case DIALOG_REGISTER:
  54.             {
  55.                 if(!strlen(inputtext))
  56.                     return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Register", "Welcome !\nThe system not found your a registered user.\nType your password in the box.\nType password !", "Continuation", "Cancel");
  57.                 if(strlen(inputtext) < 6)
  58.                     return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Register", "Welcome !\nThe system not found your a registered user.\nType your password in the box.\nInvalid entry for password. 6 characters minimum", "Continuation", "Cancel");
  59.                 if(strfind(inputtext, "%", true) != -1)
  60.                     return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Register", "Welcome !\nThe system not found your a registered user.\nType your password in the box.\nThe password can not contain the character: %", "Continuation", "Cancel");
  61.                 DOF2_CreateFile(PFile(playerid));
  62.                 DOF2_SetString(PFile(playerid), "Password", inputtext);
  63.                 DOF2_SetString(PFile(playerid), "IP", GetPIP(playerid));
  64.                 ShowPlayerDialog(playerid, DIALOG_EMAIL, DIALOG_STYLE_INPUT, "Register - Email", "Please enter your email to confirm your registration.\nNOTE!: Email will serve you well in the future password recovery.", "Continuation", "");
  65.                 return true;
  66.             }
  67.             case DIALOG_EMAIL:
  68.             {
  69.                 if(!IsValidEmail(inputtext))
  70.                     return ShowPlayerDialog(playerid, DIALOG_EMAIL, DIALOG_STYLE_INPUT, "Register - Email", "Please enter your email to confirm your registration.\nNOTE!: Email will serve you well in the future password recovery.\nInvalid email.", "Continuation", "");
  71.                 DOF2_SetString(PFile(playerid), "Email", inputtext);
  72.                 pInfo[playerid][Code] = random(5000) + random(5000) + random(5000) + random(5000) + random(5000) + random(5000);
  73.                 format(String, sizeof String, "Your verification code is:\n\r%d", pInfo[playerid][Code]);
  74.                 SendMail(inputtext, "[email protected]", "ModeName", "ModeName", String);
  75.                 ShowPlayerDialog(playerid, DIALOG_CEMAIL, DIALOG_STYLE_INPUT, "Email", "Enter the verification code that you received by email:", "Ok", "");
  76.                 return true;
  77.             }
  78.             case DIALOG_CEMAIL:
  79.             {
  80.                 if(!strlen(inputtext) || !IsValidNumber(inputtext) || pInfo[playerid][Code] != strval(inputtext))
  81.                     return ShowPlayerDialog(playerid, DIALOG_CEMAIL, DIALOG_STYLE_INPUT, "Email", "The verification code is incorrect\nEnter the verification code that you received by email:", "Continuation", "");
  82.                 SendClientMessage(playerid, -1, "Registered successfully.");
  83.                 SendClientMessage(playerid, -1, "Email Password Recovery will serve you.");
  84.                 pInfo[playerid][PlayerLogin] = true;
  85.                 return true;
  86.             }
  87.             case DIALOG_LOGIN:
  88.             {
  89.                 if(strfind(inputtext, "%", true) != -1)
  90.                     return ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Login", "Welcome !\nPlease enter your password.\nInvalid password.", "Login", "Restore Password");
  91.                 if(!strlen(inputtext))
  92.                     return ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Login", "Welcome !\nPlease enter your password.\nInvalid password.", "Login", "Restore Password");
  93.                 if(!strcmp(DOF2_GetString(PFile(playerid),"Password"), inputtext, false))
  94.                 {
  95.                     ShowPlayerDialog(playerid, DIALOG_MESSAGES, DIALOG_STYLE_MSGBOX, "Login", "you successfully connect.", "Ok", "");
  96.                     pInfo[playerid][PlayerLogin] = true;
  97.                 } else ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Login", "Welcome !\nPlease enter your password.\nInvalid password.", "Login", "Restore Password");
  98.                 return true;
  99.             }
  100.         }
  101.     }
  102.     else if(!response)
  103.     {
  104.         switch(dialogid)
  105.         {
  106.             case DIALOG_LOGIN:
  107.             {
  108.                 format(String, sizeof String, "Your player's password is:\n\r%s", DOF2_GetString(PFile(playerid), "Password"));
  109.                 SendMail(DOF2_GetString(PFile(playerid), "Email"), "[email protected]", "ModeName", "ModeName", String);
  110.                 ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login", "Welcome !\nPlease enter your password.\nPassword has been sent to your email.", "Login", "Restore Password");
  111.                 return true;
  112.             }
  113.             case DIALOG_MESSAGES: return true;
  114.             case DIALOG_REGISTER, DIALOG_EMAIL, DIALOG_CEMAIL: return KickEx(playerid);
  115.         }
  116.     }
  117.     return DOF2_SaveFile();
  118. }
  119.  
  120. public OnPlayerRequestSpawn(playerid)
  121. {
  122.     if(!pInfo[playerid][PlayerLogin])
  123.         return SendClientMessage(playerid, -1, "Log in to the server before spawn."), 0;
  124.     return true;
  125. }
  126.  
  127. forward KickPlayer(playerid);
  128. public KickPlayer(playerid) return Kick(playerid);
  129.  
  130. stock IsValidNumber( string[ ] )
  131. {
  132.     if ( !string[ 0 ] )
  133.         return false;
  134.  
  135.     new
  136.         iLength = strlen( string ),
  137.         i
  138.     ;
  139.  
  140.     if ( string[ 0 ] == '-' && string[ 1 ] )
  141.         i = 1;
  142.  
  143.     for ( ; i < iLength; i++ )
  144.     {
  145.         if ( !( '0' <= string[ i ] <= '9' ) )
  146.             return false;
  147.     }
  148.  
  149.     return true;
  150. }
Advertisement
Add Comment
Please, Sign In to add comment