Guest User

Untitled

a guest
Jul 15th, 2018
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.40 KB | None | 0 0
  1.  
  2. drop procedure if exists get_user_credentials;
  3.  
  4. delimiter #
  5.  
  6. create procedure get_user_credentials
  7. (
  8. in p_username varchar(32),
  9. in p_password varchar(32),
  10. in p_session_id char(32),
  11. in p_user_ip varchar(16)
  12. )
  13.  
  14. proc_main:begin
  15.  
  16. declare p_user_id int unsigned default null;
  17. declare p_status_id tinyint default -1;
  18. declare p_today datetime default now();
  19. declare p_reason varchar(512) default null;
  20. declare p_ban_id int default null;
  21.  
  22. -- ban checks
  23.  
  24. select u.user_id, u.status_id into p_user_id, p_status_id
  25. from users u where u.username = p_username and u.password = p_password and u.user_id > 1;
  26.  
  27. select ban_id, reason into p_ban_id, p_reason
  28. from IP_ban where ip_num = inet_aton(p_user_ip) and p_today >= created_date and p_today <= expiry_date;
  29.  
  30. if p_ban_id is not null then
  31.  
  32. -- banned user login attempt
  33.  
  34. call insert_user_log(5, p_user_id, p_session_id, p_user_ip);
  35.  
  36. select 0 as user_id, 1 as err_id, p_reason as msg;
  37.  
  38. leave proc_main;
  39.  
  40. end if;
  41.  
  42. select ban_id, reason into p_ban_id, p_reason
  43. from username_ban where username = p_username and p_today >= created_date and p_today <= expiry_date;
  44.  
  45. if p_ban_id is not null then
  46.  
  47. -- banned user login attempt
  48.  
  49. call insert_user_log(5, p_user_id, p_session_id, p_user_ip);
  50.  
  51. select 0 as user_id, 1 as err_id, p_reason as msg;
  52.  
  53. leave proc_main;
  54.  
  55. end if;
  56.  
  57. if p_user_id is null then
  58.  
  59. -- invalid user login
  60.  
  61. call insert_user_log(3, p_user_id, p_session_id, p_user_ip);
  62.  
  63. select 0 as user_id, e.* from error_msg e where e.err_id = 102;
  64.  
  65. leave proc_main;
  66.  
  67. end if;
  68.  
  69. if p_status_id <= 0 then
  70.  
  71. -- suspended, banned etc
  72.  
  73. call insert_user_log(4, p_user_id, p_session_id, p_user_ip);
  74.  
  75. call insert_user_ip(p_user_id, p_session_id, p_user_ip);
  76.  
  77. select 0 as user_id, s.msg from user_status s where s.status_id = p_status_id;
  78.  
  79. leave proc_main;
  80.  
  81. end if;
  82.  
  83. -- valid user let 'em in
  84.  
  85. update users u set u.last_login_date = now() where u.user_id = p_user_id;
  86.  
  87. call insert_user_log(1, p_user_id, p_session_id, p_user_ip);
  88.  
  89. call insert_user_ip(p_user_id, p_session_id, p_user_ip);
  90.  
  91. select
  92. u.user_id,u.username,u.role_id,u.role_name,u.status_id,
  93. u.status_name,u.theme_id,u.theme_name,game_id,
  94. u.last_login_date_fmt, warn_count
  95. from
  96. users_view u where u.user_id = p_user_id;
  97.  
  98.  
  99. end proc_main #
  100.  
  101. delimiter ;
Add Comment
Please, Sign In to add comment