/install/init_auth.php

https://github.com/wilminator/authenticate · PHP · 129 lines · 111 code · 17 blank · 1 comment · 3 complexity · 27abd72445b89aa7912604990e1ead7d MD5 · raw file

  1. <?php
  2. function init_system($host,$sysuser,$syspass,$db,$svc_user,$svc_pass,$svc_host,$user,$password,$sysadmin_email)
  3. {
  4. //Try to connect as a db superuser.
  5. $resource=mysql_connect($host,$sysuser,$syspass);
  6. if($resource===false)
  7. return "Failed to connect to the server $host with user $sysuser and password $syspass";
  8. $md5_pass=md5($password);
  9. $query=<<<EOD
  10. DROP DATABASE IF EXISTS `$db`;
  11. FLUSH TABLES;
  12. CREATE DATABASE `$db`;
  13. USE `$db`;
  14. GRANT SELECT,INSERT,UPDATE,DELETE ON $db.* TO $svc_user@'$svc_host' IDENTIFIED BY '$svc_pass';
  15. CREATE TABLE `errors` (
  16. `errorid` int(11) unsigned NOT NULL auto_increment,
  17. `date` datetime NOT NULL default '0000-00-00 00:00:00',
  18. `error` int(11) unsigned NOT NULL default '0',
  19. `function` varchar(32) NOT NULL default '',
  20. `msg` varchar(255) NOT NULL default '',
  21. `ip` varchar(15) NOT NULL default '',
  22. `offenderid` int(11) unsigned NOT NULL default '0',
  23. `victimid` int(11) unsigned NOT NULL default '0',
  24. PRIMARY KEY (`errorid`),
  25. KEY `date` (`date`),
  26. KEY `error` (`error`),
  27. KEY `ip` (`ip`),
  28. KEY `offenderid` (`offenderid`),
  29. KEY `victimid` (`victimid`)
  30. ) TYPE=MyISAM;
  31. CREATE TABLE `error_data` (
  32. `errorid` int(11) unsigned NOT NULL,
  33. `name` varchar(64) NOT NULL default '',
  34. `data` text NOT NULL default '',
  35. KEY `errorid` (`errorid`),
  36. KEY `name` (`name`)
  37. ) TYPE=MyISAM;
  38. CREATE TABLE `permissions` (
  39. `permissionid` int(11) unsigned NOT NULL auto_increment,
  40. `context` varchar(64) NOT NULL default '',
  41. `permission` varchar(64) NOT NULL default '',
  42. PRIMARY KEY (`permissionid`),
  43. UNIQUE KEY `context_permission` (`context`,`permission`),
  44. KEY `permission` (`permission`)
  45. ) TYPE=MyISAM;
  46. INSERT INTO `permissions` (permissionid, context, permission) VALUES (1, '_', 'SUPERUSER');
  47. INSERT INTO `permissions` (permissionid, context, permission) VALUES (2, '_', 'CREATE_SYSTEM_ACCOUNTS');
  48. INSERT INTO `permissions` (permissionid, context, permission) VALUES (3, '_', 'UPDATE_ACCOUNTS');
  49. INSERT INTO `permissions` (permissionid, context, permission) VALUES (4, '_', 'DELETE_ACCOUNTS');
  50. INSERT INTO `permissions` (permissionid, context, permission) VALUES (5, '_', 'ALTER_PERMISSIONS');
  51. INSERT INTO `permissions` (permissionid, context, permission) VALUES (6, '_', 'ALTER_OTHERS_DATA');
  52. INSERT INTO `permissions` (permissionid, context, permission) VALUES (7, '_', 'ACCESS_OTHERS_DATA');
  53. INSERT INTO `permissions` (permissionid, context, permission) VALUES (8, '_', 'LIST_ACCOUNTS');
  54. INSERT INTO `permissions` (permissionid, context, permission) VALUES (9, '_', 'LIST_EMAILS');
  55. INSERT INTO `permissions` (permissionid, context, permission) VALUES (10, '_', 'VIEW_ERROR_LOG');
  56. CREATE TABLE `user_data` (
  57. `userid` int(11) unsigned NOT NULL default '0',
  58. `context` varchar(64) NOT NULL default '',
  59. `name` varchar(64) NOT NULL default '',
  60. `value` varchar(64) NOT NULL default '',
  61. PRIMARY KEY (`userid`,`context`,`name`)
  62. ) TYPE=MyISAM;
  63. CREATE TABLE `user_membership` (
  64. `userid` int(11) unsigned NOT NULL default '0',
  65. `context` varchar(64) NOT NULL default '',
  66. PRIMARY KEY (`userid`,`context`),
  67. KEY `context` (`context`)
  68. ) TYPE=MyISAM;
  69. INSERT INTO `user_membership` (userid, context) VALUES (1, '_');
  70. CREATE TABLE `user_permissions` (
  71. `userid` int(11) unsigned NOT NULL default '0',
  72. `permissionid` int(11) unsigned NOT NULL default '0',
  73. PRIMARY KEY (`userid`,`permissionid`),
  74. KEY `permissionid` (`permissionid`)
  75. ) TYPE=MyISAM;
  76. INSERT INTO `user_permissions` (userid, permissionid) VALUES (1, 1);
  77. CREATE TABLE `users` (
  78. `userid` int(11) unsigned NOT NULL auto_increment,
  79. `name` varchar(16) NOT NULL,
  80. `password` varchar(32) NOT NULL,
  81. `email` varchar(64) NOT NULL,
  82. `last_login` datetime NOT NULL default '0000-00-00 00:00:00',
  83. `acct_type` enum('User','System') NOT NULL default 'User',
  84. PRIMARY KEY (`userid`),
  85. KEY `email` (`email`),
  86. UNIQUE KEY `name_acct_type` (`name`,`acct_type`)
  87. ) TYPE=MyISAM;
  88. INSERT INTO `users` (userid, name, password, email, last_login, acct_type) VALUES (1, '$user', '$md5_pass', '$sysadmin_email', NOW(), 'User');
  89. CREATE TABLE `logins` (
  90. `userid` int(11) unsigned NOT NULL,
  91. `auth_code` varchar(40) NOT NULL default '',
  92. `ip` varchar(15) NULL,
  93. `last_auth` datetime NOT NULL default '0000-00-00 00:00:00',
  94. UNIQUE KEY (`userid`,`auth_code`,`ip`),
  95. KEY `last_auth` (`last_auth`)
  96. ) TYPE=MyISAM;
  97. EOD;
  98. foreach(explode(';',$query) as $stub)
  99. {
  100. if(trim($stub)!='')
  101. $result=mysql_query($stub,$resource);
  102. if($result===false)
  103. {
  104. $error=mysql_error();
  105. mysql_close($resource);
  106. return "Failed Query: $stub Error: $error";
  107. }
  108. }
  109. mysql_close($resource);
  110. return false;
  111. }
  112. ?>