Advertisement
Guest User

Untitled

a guest
Jul 29th, 2017
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 3.43 KB | None | 0 0
  1. SQL neni urcite spustitelny, psal sem TO ve vlaku v textaku .. je TO zapis myslenky
  2.  
  3. CREATE PROCEDURE user_login_handler(IP VARCHAR(15), USERNAME VARCHAR(40), PASS VARCHAR(40))
  4. BEGIN
  5. DECLARE LOGIN_KEY VARCHAR(40);
  6. DECLARE SESSION_KEY VARCHAR(40);
  7. DECLARE userid INT(10);
  8. DECLARE userpass VARCHAR(40);
  9. SET userid = SELECT UID FROM users  WHERE nick = USERNAME;
  10. SET userpass = SELECT passhash FROM users WHERE nick = USERNAME;
  11. IF (userid) THEN
  12.     IF (userpass = sha1(PASS)) THEN
  13.    
  14.         SET LOGIN_KEY = SELECT KEYVALUE FROM security_keys WHERE SKID = 2;
  15.         SET SESSION_KEY = SELECT KEYVALUE FROM security_keys WHERE SKID = 1;
  16.        
  17.         IF (LOGIN_KEY AND SESSION_KEY) THEN
  18.        
  19.         DECLARE LOGIN_KEY_HASH VARCHAR(40);
  20.         DECLARE SESSION_KEY_HASH VARCHAR(40);
  21.         SET LOGIN_KEY_HASH = sha1(CONCAT(PASS,TIME,LOGIN_KEY));
  22.         SET SESSION_KEY_HASH = sha1(CONCAT(PASS,IP,TIME,SESSION_KEY));
  23.        
  24.             IF exist (SELECT UID FROM users_keys WHERE UID = userid) THEN
  25.                
  26.                 UPDATE users_keys SET LOGIN_KEY = LOGIN_KEY_HASH WHERE UID = userid;
  27.                 UPDATE users_keys SET SESSION_KEY = SESSION_KEY_HASH WHERE UID = userid;
  28.                
  29.             ELSE
  30.            
  31.             INSERT INTO users_keys (UID ,LOGIN_KEY ,COOKIES_KEY ,PROTECTED)
  32.             VALUES (userid,LOGIN_KEY_HASH,SESSION_KEY_HASH,0);
  33.            
  34.             END IF;
  35.                 RETURN CONCAT(1,LOGIN_KEY_HASH,SESSION_KEY_HASH);
  36.         ELSE
  37.        
  38.         RETURN CONCAT(2,sha1(2),sha1(2));
  39.         END IF;
  40.        
  41.     ELSE
  42.    
  43.     RETURN CONCAT(3,sha1(2),sha1(2));
  44.     END IF;
  45. ELSE
  46. RETURN CONCAT(4,sha1(2),sha1(2));
  47. END IF;
  48.  
  49. END
  50.  
  51.  
  52. --
  53. -- Struktura tabulky `security_keys`
  54. --
  55.  
  56. CREATE TABLE IF NOT EXISTS `security_keys` (
  57.   `SKID` INT(2) NOT NULL AUTO_INCREMENT COMMENT 'security key id',
  58.   `KEYVALUE` VARCHAR(40) COLLATE utf8_bin NOT NULL COMMENT 'security key value',
  59.   `DESCR` VARCHAR(40) COLLATE utf8_bin NOT NULL COMMENT 'decription',
  60.   PRIMARY KEY (`SKID`)
  61. ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=5 ;
  62.  
  63. --
  64. -- Vypisuji data pro tabulku `security_keys`
  65. --
  66.  
  67. INSERT INTO `security_keys` (`SKID`, `KEYVALUE`, `DESCR`) VALUES
  68. (1, '9ecef4d8c37e772896c20384c6e4d4bbbbf4d968', 'users login key'),
  69. (2, 'd65107910e31a728fe31f958316ba48809d8e7c1', 'users session key'),
  70. (3, 'a5bca2ccdfa0cc1ea3423cde347b13f4955b4f30', 'administration access key'),
  71. (4, 'ae272fc89ab540bee64d920092ef0a34edc24377', 'master key for root');
  72.  
  73. -- --------------------------------------------------------
  74.  
  75. --
  76. -- Struktura tabulky `users`
  77. --
  78.  
  79. CREATE TABLE IF NOT EXISTS `users` (
  80.   `UID` INT(10) NOT NULL AUTO_INCREMENT,
  81.   `passhash` VARCHAR(40) COLLATE utf8_bin NOT NULL,
  82.   `nick` VARCHAR(40) COLLATE utf8_bin NOT NULL,
  83.   PRIMARY KEY (`UID`)
  84. ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=2 ;
  85.  
  86. --
  87. -- Vypisuji data pro tabulku `users`
  88. --
  89.  
  90. INSERT INTO `users` (`UID`, `passhash`, `nick`) VALUES
  91. (1, '7c4a8d09ca3762af61e59520943dc26494f8941b', 'tany');
  92.  
  93. -- --------------------------------------------------------
  94.  
  95. --
  96. -- Struktura tabulky `users_keys`
  97. --
  98.  
  99. CREATE TABLE IF NOT EXISTS `users_keys` (
  100.   `UID` INT(12) NOT NULL AUTO_INCREMENT COMMENT 'user id',
  101.   `LOGIN_KEY` VARCHAR(40) COLLATE utf8_bin NOT NULL COMMENT 'key for login',
  102.   `COOKIES_KEY` VARCHAR(40) COLLATE utf8_bin NOT NULL COMMENT 'key for remerber login ',
  103.   `PROTECTED` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'bool readonly user (GM ...)',
  104.   PRIMARY KEY (`UID`)
  105. ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=2 ;
  106.  
  107. --
  108. -- Vypisuji data pro tabulku `users_keys`
  109. --
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement