Arquivos
wMind/mind3rd/API/programs/Auth.php
T
Felipe N. Moura 79bebb1de7 *Added log manager
*Added some constants
Added the 'who am i' program
2012-04-07 16:41:09 -03:00

76 linhas
2.4 KiB
PHP
Arquivo Executável

<?php
/**
* This file is part of TheWebMind 3rd generation.
*
* @author Felipe Nascimento de Moura <felipenmoura@gmail.com>
* @license licenses/mind3rd.license
*/
use Symfony\Component\Console\Input\InputArgument,
Symfony\Component\Console\Input\InputOption,
Symfony\Component\Console;
/**
* This class represents the program auth, receiving the user and
* may also receive the password. It will start your session
* allowing you to run the restricted programs
*
* @author Felipe Nascimento de Moura <felipenmoura@gmail.com>
*/
class Auth extends MindCommand implements program
{
public $login= null;
public $pwd= null;
public function action()
{
if(!$this->pwd)
$this->pwd= $this->prompt('pwd',
Mind::write('passwordRequired', false),
true);
if($db = new SQLite3(_MINDSRC_.'/mind3rd/SQLite/mind'))
{
$result= $db->query("SELECT * FROM user where login='".$this->login.
"' AND pwd='".sha1($this->pwd)."' AND status= 'A'");
$row= $result->fetchArray();
$_SESSION['auth']= JSON_encode($row);
$_SESSION['pk_user']= $row['pk_user'];
$_SESSION['status']= $row['status'];
$_SESSION['login']= $row['login'];
$_SESSION['type']= $row['type'];
if(!$row)
{
Mind::write('auth_fail', true);
\MindLog::log(\MindLog::LOG_TYPE_USER, 'FAIL - Tried login with user \''.$this->login.'\' and failed');
return false;
}
}else{
die('Database not found!');
}
Mind::write('autenticated', true, $this->login);
\MindLog::log(\MindLog::LOG_TYPE_USER, ' OK - \''.$this->login.'\' logged in');
return $this;
}
public function __construct()
{
$this->setCommandName('auth')
->setDescription('Autenticate a user')
->setRestrict(false)
->setAction('action')
->setHelp(<<<EOT
Sets the user with a password.
It is required to autenticate, to run most of the commands
EOT
);
$this->addRequiredArgument('login', 'Login to access');
$this->addOptionalArgument('pwd', 'The password may optionaly be passed');
$this->init();
}
}