summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/command.php27
-rw-r--r--lib/commandinterpreter.php6
-rw-r--r--lib/router.php2
3 files changed, 35 insertions, 0 deletions
diff --git a/lib/command.php b/lib/command.php
index 9efa40696..2ec3320de 100644
--- a/lib/command.php
+++ b/lib/command.php
@@ -579,6 +579,32 @@ class OnCommand extends Command
}
}
+class LoginCommand extends Command
+{
+ function execute($channel)
+ {
+ $login_token = Login_token::staticGet('user_id',$this->user->id);
+ if($login_token){
+ $login_token->delete();
+ }
+ $login_token = new Login_token();
+ $login_token->user_id = $this->user->id;
+ $login_token->token = common_good_rand(16);
+ $login_token->created = common_sql_now();
+ $result = $login_token->insert();
+ if (!$result) {
+ common_log_db_error($login_token, 'INSERT', __FILE__);
+ $channel->error($this->user, sprintf(_('Could not create login token for %s'),
+ $this->user->nickname));
+ return;
+ }
+ $channel->output($this->user,
+ sprintf(_('This link is useable only once, and is good for only 2 minutes: %s'),
+ common_local_url('login',
+ array('user_id'=>$login_token->user_id, 'token'=>$login_token->token))));
+ }
+}
+
class HelpCommand extends Command
{
function execute($channel)
@@ -598,6 +624,7 @@ class HelpCommand extends Command
"reply #<notice_id> - reply to notice with a given id\n".
"reply <nickname> - reply to the last notice from user\n".
"join <group> - join group\n".
+ "login - Get a link to login to the web interface\n".
"drop <group> - leave group\n".
"stats - get your stats\n".
"stop - same as 'off'\n".
diff --git a/lib/commandinterpreter.php b/lib/commandinterpreter.php
index b921a17cc..d878fe268 100644
--- a/lib/commandinterpreter.php
+++ b/lib/commandinterpreter.php
@@ -41,6 +41,12 @@ class CommandInterpreter
return null;
}
return new HelpCommand($user);
+ case 'login':
+ if ($arg) {
+ return null;
+ } else {
+ return new LoginCommand($user);
+ }
case 'on':
if ($arg) {
list($other, $extra) = $this->split_arg($arg);
diff --git a/lib/router.php b/lib/router.php
index 888cbdd20..0ddda473c 100644
--- a/lib/router.php
+++ b/lib/router.php
@@ -88,6 +88,8 @@ class Router
$m->connect('doc/:title', array('action' => 'doc'));
+ $m->connect('main/login?user_id=:user_id&token=:token', array('action'=>'login'), array('user_id'=> '[0-9]+', 'token'=>'.+'));
+
// main stuff is repetitive
$main = array('login', 'logout', 'register', 'subscribe',