Support https in blog URLs
[dotclear.git] / class.xorg.auth.php
index adba0c1..e2290b8 100644 (file)
@@ -10,12 +10,12 @@ class xorgAuth extends dcAuth {
                              'nom' => null,
                              'grpauth' => null,
                              'perms' => null);
-  static public function behavior_coreBlogConstruct(&$blog) {
+  static public function behavior_coreBlogConstruct($blog) {
     global $core;
     $core->auth->sudo(array($core->auth, 'updateUserPerms'), $blog);
   }
 
-  public function __construct(&$core) {
+  public function __construct($core) {
     parent::__construct($core);
     $core->addBehavior('coreBlogConstruct', array('xorgAuth', 'behavior_coreBlogConstruct'));
   }
@@ -38,7 +38,16 @@ class xorgAuth extends dcAuth {
       $this->user_id = $user;
       $this->user_admin = ($_SESSION['auth-xorg-perms'] == 'admin');
       parent::checkUser($this->user_id);
-      $core->getUserBlogs();
+//      $core->getUserBlogs();
+      $this->setCommentCookie();
+    }
+  }
+
+  private function setCommentCookie() {
+    if (!isset($_COOKIE['comment_info_xorg']) || $_COOKIE['comment_info_xorg'] != $this->user_id) {
+      $cookie = $this->getInfo('user_displayname') . "\n" . $this->getInfo('user_email') . "\n" . $this->getInfo('user_url');
+      setcookie('comment_info_xorg', $this->user_id, time() + 30 * 86400, '/');
+      setrawcookie('comment_info', rawurlencode($cookie), time() + 30 * 86400, '/');
     }
   }
 
@@ -54,22 +63,25 @@ class xorgAuth extends dcAuth {
       $cur->user_firstname = $_SESSION['auth-xorg-prenom'];
       $cur->user_displayname = $cur->user_firstname . ' ' . $cur->user_name;
       $cur->user_email = $_SESSION['auth-xorg'] . '@polytechnique.org';
+      $cur->user_url = 'https://www.polytechnique.org/profile/' . $_SESSION['auth-xorg'];
       $defaults = $core->userDefaults();
       $defaults['post_xorg_perms'] = 'public';
       $cur->user_options = $defaults;
+      $cur->user_lang = 'fr';
+      $cur->user_tz = 'Europe/Paris';
       $cur->user_default_blog = $_SERVER['DC_BLOG_ID'];
       $core->addUser($cur);
     }
   }
 
-  public function updateUserPerms(&$blog) {
+  public function updateUserPerms($blog) {
     global $core;
     $this->buildFromSession();
     if (!isset($_SESSION['auth-xorg'])) {
       return;
     }
-    $type = $blog->settings->get('xorg_blog_type');
-    $owner = $blog->settings->get('xorg_blog_owner');
+    $type = $blog->settings->xorgauth->get('xorg_blog_type');
+    $owner = $blog->settings->xorgauth->get('xorg_blog_owner');
     $level = $this->xorg_infos['grpauth'];
     $rec = $core->getUser($this->user_id);
     $wasAdmin = $rec->f('user_super');
@@ -83,12 +95,14 @@ class xorgAuth extends dcAuth {
       $this->killSession();
       return;
     }
-    if (($type == 'group-admin' || $type == 'group-member') && $level == 'admin') {
+    if (($type == 'group-admin' || $type == 'group-member' || $type == 'connected') && $level == 'admin') {
       $perms = array('usage' => true,
                      'contentadmin' => true,
                      'admin' => true);
     } else if ($type == 'group-member' && $level == 'membre') {
       $perms = array('usage' => true);
+    } else if ($type == 'connected' && $this->xorg_infos['forlife'] != '') {
+      $perms = array('usage' => true);
     } else if ($type == 'user' && $owner == $this->xorg_infos['forlife']) {
       $perms = array('usage' => true,
                      'contentadmin' => true,
@@ -119,14 +133,14 @@ class xorgAuth extends dcAuth {
       $path = @$_SERVER['PATH_INFO'];
     }
     $_SESSION["auth-x-challenge"] = md5(uniqid(rand(), 1));
-    $_SESSION['xorg-group'] = $core->blog->settings->get('xorg_blog_owner');
+    $_SESSION['xorg-group'] = $core->blog->settings->xorgauth->get('xorg_blog_owner');
     $url = "https://www.polytechnique.org/auth-groupex/utf8";
     $url .= "?session=" . session_id();
     $url .= "&challenge=" . $_SESSION["auth-x-challenge"];
     $url .= "&pass=" . md5($_SESSION["auth-x-challenge"] . XORG_AUTH_KEY);
-    $type = $core->blog->settings->get('xorg_blog_type');
-    if ($type == 'group-member' || $type == 'group-admin') {
-      $url .= '&group=' . $core->blog->settings->get('xorg_blog_owner');
+    $type = $core->blog->settings->xorgauth->get('xorg_blog_type');
+    if ($type == 'group-member' || $type == 'group-admin' || $type == 'connected') {
+      $url .= '&group=' . $core->blog->settings->xorgauth->get('xorg_blog_owner');
     }
     $url .= "&url=" . urlencode($core->blog->url . "auth/XorgReturn?path=" . $path);
     session_write_close();
@@ -212,23 +226,23 @@ class xorgAuth extends dcAuth {
 
   public function userID() {
     $this->buildFromSession();
-    $isadmin = preg_match('@/admin/[^/]\.php$@i', $_SERVER['SCRIPT_FILENAME']);
+    $isadmin = preg_match('@/admin/[^/]+\.php$@i', $_SERVER['SCRIPT_FILENAME']);
     if (!$isadmin) {
       return null;
     }
     return parent::userID();
   }
 
-  public function getPermissions() {
+  public function getPermissions($blog_id) {
     $this->buildFromSession();
-    return parent::getPermissions();
+    return parent::getPermissions($blog_id);
   }
 
   public function getInfo($n) {
     $this->buildFromSession();
     if ($n == 'xorg_group_member') {
       global $core;
-      if ($core->blog->settings('xorg_blog_owner') != $_SESSION['xorg-group']) {
+      if ($core->blog->settings->xorgauth->get('xorg_blog_owner') != $_SESSION['xorg-group']) {
         return false;
       }
       $perm = $this->xorg_infos['grpauth'];