You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
PlexShare/fuel/packages/oil/views/admin/crud/controllers/admin.php

103 lines
2.1 KiB

<?php
class Controller_Admin extends Controller_Base
{
public $template = 'admin/template';
public function before()
{
parent::before();
if (Request::active()->controller !== 'Controller_Admin' or ! in_array(Request::active()->action, array('login', 'logout')))
{
if (Auth::check())
{
if ( ! Auth::member(100))
{
Session::set_flash('error', e('You don\'t have access to the admin panel'));
Response::redirect('/');
}
}
else
{
Response::redirect('admin/login');
}
}
}
public function action_login()
{
// Already logged in
Auth::check() and Response::redirect('admin');
$val = Validation::forge();
if (Input::method() == 'POST')
{
$val->add('email', 'Email or Username')
->add_rule('required');
$val->add('password', 'Password')
->add_rule('required');
if ($val->run())
{
if ( ! Auth::check())
{
if (Auth::login(Input::post('email'), Input::post('password')))
{
// assign the user id that lasted updated this record
foreach (\Auth::verified() as $driver)
{
if (($id = $driver->get_user_id()) !== false)
{
// credentials ok, go right in
$current_user = Model_User::find($id[1]);
Session::set_flash('success', e('Welcome, '.$current_user->username));
Response::redirect('admin');
}
}
}
else
{
$this->template->set_global('login_error', 'Login failed!');
}
}
else
{
$this->template->set_global('login_error', 'Already logged in!');
}
}
}
$this->template->title = 'Login';
$this->template->content = View::forge('admin/login', array('val' => $val), false);
}
/**
* The logout action.
*
* @access public
* @return void
*/
public function action_logout()
{
Auth::logout();
Response::redirect('admin');
}
/**
* The index action.
*
* @access public
* @return void
*/
public function action_index()
{
$this->template->title = 'Dashboard';
$this->template->content = View::forge('admin/dashboard');
}
}
/* End of file app.php */