CONCAT(af.alias, '@{$globals->mail->domain}') AS forlife,
CONCAT(ab.alias, '@{$globals->mail->domain}') AS bestalias,
a.full_name, a.display_name, a.sex = 'female' AS gender,
- a.email_format,
+ a.email_format, a.password,
IF (a.state = 'active', at.perms, '') AS perms,
a.is_admin
FROM accounts AS a
public function tokenAuth($login, $token)
{
- $res = XDB::query('SELECT a.hruid
+ $res = XDB::query('SELECT a.uid AS user_id, a.hruid
FROM aliases AS l
INNER JOIN accounts AS a ON (l.id = a.uid AND a.state = \'active\')
WHERE a.token = {?} AND l.alias = {?} AND l.type != \'homonyme\'',
$token, $login);
if ($res->numRows() == 1) {
- $data = $res->fetchOneAssoc();
- return new User($data['hruid'], $data);
+ return new User(null, $res->fetchOneAssoc());
}
return null;
}
}
Banana::$debug_nntp = ($globals->debug & DEBUG_BT);
Banana::$debug_smarty = ($globals->debug & DEBUG_SMARTY);
- if (!S::v('core_rss_hash')) {
- Banana::$feed_active = false;
- }
+ Banana::$feed_active = S::hasAuthToken();
+
parent::__construct($params, 'NNTP', 'PlatalBananaPage');
if (@$params['action'] == 'profile') {
Banana::$action = 'profile';
} else {
$group = '';
}
- return '/rss/' . $group . S::v('hruid') . '/' . S::v('core_rss_hash') . '/rss.xml';
+ return '/rss/' . $group . S::v('hruid') . '/' . S::s('token') . '/rss.xml';
}
function hook_platalMessageLink($params)
Banana::$msgshow_mimeparts[] = 'source';
}
array_push(Banana::$msgparse_headers, 'x-org-id', 'x-org-mail');
- if (!S::v('core_rss_hash')) {
- Banana::$feed_active = false;
- }
+ Banana::$feed_active = S::hasAuthToken();
MLBanana::$listname = $params['listname'];
MLBanana::$domain = $params['domain'];
$page->assign('rss_hash', $hash);
header('Content-Type: application/rss+xml; charset=utf8');
}
- return is_null($user) ? null : $user->id();
+ return $user;
}
// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
);
}
- function prepare_client(&$page)
+ function prepare_client(&$page, $user = null)
{
global $globals;
$this->load('lists.inc.php');
+ if (is_null($user)) {
+ $user = S::user();
+ }
- $this->client = new MMList(S::v('uid'), S::v('password'));
+ $this->client = new MMList($user->id(), $user->password);
return $globals->mail->domain;
}
function handler_rss(&$page, $liste = null, $alias = null, $hash = null)
{
- require_once('rss.inc.php');
- $uid = init_rss(null, $alias, $hash);
- if (!$uid || !$liste) {
- exit;
+ if (!$liste) {
+ return PL_NOT_FOUND;
+ }
+ $user = Platal::session()->tokenAuth($alias, $hash);
+ if (is_null($user)) {
+ return PL_FORBIDDEN;
}
- $res = XDB::query("SELECT user_id AS uid, password, alias AS forlife
- FROM auth_user_md5 AS u
- INNER JOIN aliases AS a ON (a.id = u.user_id AND a.type = 'a_vie')
- WHERE u.user_id = {?}", $uid);
- $row = $res->fetchOneAssoc();
- $_SESSION = array_merge($row, $_SESSION);
-
- $domain = $this->prepare_client($page);
+ $domain = $this->prepare_client($page, $user);
if (list($det) = $this->client->get_members($liste)) {
if (substr($liste,0,5) != 'promo' && ($det['ins'] || $det['priv'])
&& !$det['own'] && ($det['sub'] < 2)) {
exit;
}
require_once('banana/ml.inc.php');
- $banana = new MLBanana(S::user(), Array('listname' => $liste, 'domain' => $domain, 'action' => 'rss2'));
+ $banana = new MLBanana($user, Array('listname' => $liste, 'domain' => $domain, 'action' => 'rss2'));
$banana->run();
}
exit;