222 lines
4.4 KiB
PHP
222 lines
4.4 KiB
PHP
<?php
|
|
|
|
/**
|
|
* The Legend of Z
|
|
*
|
|
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
|
* @copyright 2014 Heinrich-Heine-Universität Düsseldorf
|
|
* @license http://www.gnu.org/licenses/gpl.html
|
|
* @link https://bitbucket.org/coderkun/the-legend-of-z
|
|
*/
|
|
|
|
namespace hhu\z\controllers;
|
|
|
|
|
|
/**
|
|
* Controller of the Agent to list registered users and their data.
|
|
*
|
|
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
|
*/
|
|
class UsersController extends \hhu\z\Controller
|
|
{
|
|
/**
|
|
* User permissions
|
|
*
|
|
* @var array
|
|
*/
|
|
public $permissions = array(
|
|
'index' => array(),
|
|
'user' => array(),
|
|
'create' => array(),
|
|
'edit' => array(),
|
|
'delete' => array()
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
* Action: index.
|
|
*/
|
|
public function index()
|
|
{
|
|
// Get registered users
|
|
$users = $this->Users->getUsers();
|
|
|
|
|
|
// Pass data to view
|
|
$this->set('users', $users);
|
|
}
|
|
|
|
|
|
/**
|
|
* Action: user.
|
|
*
|
|
* Show a user and its details.
|
|
*
|
|
* @throws IdNotFoundException
|
|
* @param string $userUrl URL-Username of an user
|
|
*/
|
|
public function user($userUrl)
|
|
{
|
|
// Get user
|
|
$user = $this->Users->getUserByUrl($userUrl);
|
|
|
|
|
|
// Pass data to view
|
|
$this->set('user', $user);
|
|
}
|
|
|
|
|
|
/**
|
|
* Action: login.
|
|
*
|
|
* Log in a user.
|
|
*/
|
|
public function login()
|
|
{
|
|
$username = '';
|
|
|
|
// Log the user in
|
|
if($this->request->getRequestMethod() == 'POST' && !empty($this->request->getPostParam('login')))
|
|
{
|
|
$username = $this->request->getPostParam('username');
|
|
$userId = $this->Users->login(
|
|
$username,
|
|
$this->request->getPostParam('password')
|
|
);
|
|
|
|
if(!is_null($userId))
|
|
{
|
|
$this->Auth->setUserId($userId);
|
|
$user = $this->Users->getUserById($userId);
|
|
|
|
$this->redirect($this->linker->link(array($user['url']), 1));
|
|
}
|
|
}
|
|
|
|
|
|
// Pass data to view
|
|
$this->set('username', $username);
|
|
$this->set('failed', ($this->request->getRequestMethod() == 'POST'));
|
|
}
|
|
|
|
|
|
/**
|
|
* Action: logout.
|
|
*
|
|
* Log out a user.
|
|
*/
|
|
public function logout()
|
|
{
|
|
// Unset the currently logged in user
|
|
$this->Auth->setUserId(null);
|
|
|
|
// Redirect
|
|
$this->redirect($this->linker->link(array()));
|
|
}
|
|
|
|
|
|
/**
|
|
* Action: create.
|
|
*
|
|
* Create a new user.
|
|
*/
|
|
public function create()
|
|
{
|
|
if($this->request->getRequestMethod() == 'POST' && !is_null($this->request->getPostParam('create')))
|
|
{
|
|
// Create new user
|
|
$userId = $this->Users->createUser(
|
|
$this->request->getPostParam('username'),
|
|
$this->request->getPostParam('email'),
|
|
$this->request->getPostParam('password')
|
|
);
|
|
|
|
// Redirect to user
|
|
$user = $this->Users->getUserById($userId);
|
|
$this->redirect($this->linker->link(array($user['url']), 1));
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* Action: edit.
|
|
*
|
|
* Edit a user.
|
|
*
|
|
* @throws IdNotFoundException
|
|
* @param string $userUrl URL-Username of an user
|
|
*/
|
|
public function edit($userUrl)
|
|
{
|
|
// User
|
|
$user = $this->Users->getUserByUrl($userUrl);
|
|
|
|
// Check request method
|
|
if($this->request->getRequestMethod() == 'POST')
|
|
{
|
|
// Save changes
|
|
if(!empty($this->request->getPostParam('save')))
|
|
{
|
|
// Edit user
|
|
$this->Users->editUser(
|
|
$user['id'],
|
|
$this->request->getPostParam('username'),
|
|
$this->request->getPostParam('email'),
|
|
$this->request->getPostParam('password')
|
|
);
|
|
$user = $this->Users->getUserById($user['id']);
|
|
}
|
|
|
|
|
|
// Redirect to entry
|
|
$this->redirect($this->linker->link(array($user['url']), 1));
|
|
}
|
|
|
|
|
|
// Pass data to view
|
|
$this->set('user', $user);
|
|
}
|
|
|
|
|
|
/**
|
|
* Action: delete.
|
|
*
|
|
* Delete a user.
|
|
*
|
|
* @throws IdNotFoundException
|
|
* @param string $userUrl URL-Username of an user
|
|
*/
|
|
public function delete($userUrl)
|
|
{
|
|
// User
|
|
$user = $this->Users->getUserByUrl($userUrl);
|
|
|
|
// Check request method
|
|
if($this->request->getRequestMethod() == 'POST')
|
|
{
|
|
// Check confirmation
|
|
if(!empty($this->request->getPostParam('delete')))
|
|
{
|
|
// Delete user
|
|
$this->Users->deleteUser($user['id']);
|
|
|
|
// Redirect to overview
|
|
$this->redirect($this->linker->link(null, 1));
|
|
}
|
|
|
|
// Redirect to entry
|
|
$this->redirect($this->linker->link(array('user', $user['url']), 1));
|
|
}
|
|
|
|
|
|
// Show confirmation
|
|
$this->set('user', $user);
|
|
}
|
|
|
|
|
|
}
|
|
|
|
?>
|