hook.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. <?php
  2. function plugin_singlesignon_display_login() {
  3. global $CFG_GLPI;
  4. $url_prefix = $CFG_GLPI['root_doc'] . '/plugins/singlesignon/front/callback.php';
  5. $url_sufix = '';
  6. if (isset($_POST['redirect']) && (strlen($_POST['redirect']) > 0)) {
  7. $url_sufix = "/redirect/" . str_replace('/', '~', $_POST['redirect']);
  8. } else if (isset($_GET['redirect']) && strlen($_GET['redirect']) > 0) {
  9. $url_sufix = "/redirect/" . str_replace('/', '~', $_GET['redirect']);
  10. }
  11. $signon_provider = new PluginSinglesignonProvider();
  12. $rows = $signon_provider->find('`is_active` = 1');
  13. $html = array();
  14. foreach ($rows as $row) {
  15. $html[] = '<a href="' . $url_prefix . '/provider/' . $row['id'] . $url_sufix . '" style="color: #CFCFCF">[ Login with ' . $row['name'] . ' ]</a>';
  16. }
  17. echo implode("<br />\n", $html);
  18. }
  19. function plugin_singlesignon_install() {
  20. /* @var $DB DB */
  21. global $DB;
  22. $currentVersion = '0.0.0';
  23. $default = array(
  24. );
  25. $current = Config::getConfigurationValues('singlesignon');
  26. if (isset($current['version'])) {
  27. $currentVersion = $current['version'];
  28. }
  29. foreach ($default as $key => $value) {
  30. if (!isset($current[$key])) {
  31. $current[$key] = $value;
  32. }
  33. }
  34. Config::setConfigurationValues('singlesignon', $current);
  35. if (!sso_TableExists("glpi_plugin_singlesignon_providers")) {
  36. $query = "CREATE TABLE `glpi_plugin_singlesignon_providers` (
  37. `id` int(11) NOT NULL auto_increment,
  38. `type` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  39. `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  40. `client_id` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  41. `client_secret` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  42. `scope` varchar(255) COLLATE utf8_unicode_ci NULL,
  43. `extra_options` varchar(255) COLLATE utf8_unicode_ci NULL,
  44. `url_authorize` varchar(255) COLLATE utf8_unicode_ci NULL,
  45. `url_access_token` varchar(255) COLLATE utf8_unicode_ci NULL,
  46. `url_resource_owner_details` varchar(255) COLLATE utf8_unicode_ci NULL,
  47. `is_active` tinyint(1) NOT NULL DEFAULT '0',
  48. `is_deleted` tinyint(1) NOT NULL default '0',
  49. `comment` text COLLATE utf8_unicode_ci,
  50. `date_mod` datetime DEFAULT NULL,
  51. `date_creation` datetime DEFAULT NULL,
  52. PRIMARY KEY (`id`),
  53. KEY `date_mod` (`date_mod`),
  54. KEY `date_creation` (`date_creation`)
  55. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
  56. $DB->query($query) or die("error creating glpi_plugin_singlesignon_providers " . $DB->error());
  57. // $query = "INSERT INTO `glpi_plugin_singlesignon_providers`
  58. // (`id`, `name`, `serial`, `is_deleted`)
  59. // VALUES (1, 'example 1', 'serial 1', 0),
  60. // (2, 'example 2', 'serial 2', 0),
  61. // (3, 'example 3', 'serial 3', 0)";
  62. // $DB->query($query) or die("error populate glpi_plugin_example " . $DB->error());
  63. }
  64. Config::setConfigurationValues('singlesignon', array(
  65. 'version' => PLUGIN_SINGLESIGNON_VERSION,
  66. ));
  67. return true;
  68. }
  69. function plugin_singlesignon_uninstall() {
  70. global $DB;
  71. $config = new Config();
  72. $rows = $config->find("`context` LIKE 'singlesignon%'");
  73. foreach ($rows as $id => $row) {
  74. $config->delete(array('id' => $id));
  75. }
  76. // Old version tables
  77. if (sso_TableExists("glpi_plugin_singlesignon_providers")) {
  78. $query = "DROP TABLE `glpi_plugin_singlesignon_providers`";
  79. $DB->query($query) or die("error deleting glpi_plugin_singlesignon_providers");
  80. }
  81. return true;
  82. }