GIF89a;
| Direktori : /home/serb/public_html/livechat/php/controller/ |
| Current File : /home/serb/public_html/livechat/php/controller/AuthenticationController.php |
<?php
class AuthenticationController extends Controller
{
public function isGuestLoggedInAction()
{
// Check if there is someone already logged-in
$id = $this->get('guest')->getId();
if($id !== null)
{
// Check if the user's session is still valid
$user = UserModel::repo()->find($id);
if($user && $user->hasValidSession())
{
// Update user's information
$user->info = json_decode($this->get('request')->postVar('info', false));
$user->save();
return $this->json(array(
'success' => true,
'name' => substr($user->name, 0, strrpos($user->name, '-', -1)),
'mail' => $user->mail,
'image' => $user->image
));
}
else
{
// Clear guest's identity
$this->get('auth')->clearGuest();
}
}
return $this->json(array('success' => false));
}
public function loginGuestAction()
{
// Check if there is someone already logged-in
$id = $this->get('guest')->getId();
if($id !== null)
{
// Check if the user's session is still valid
$user = UserModel::repo()->find($id);
if($user && $user->hasValidSession())
{
return $this->json(array('success' => true));
}
else
{
// Clear guest's identity
$this->get('auth')->clearGuest();
}
}
// Get the input
$request = $this->get('request');
$name = $request->postVar('name');
$mail = $request->postVar('mail');
$image = $request->postVar('image');
$info = $request->postVar('info', false);
// Validate the input
$errors = $this->get('model_validation')->validateLoginData(compact('name', 'mail'));
if(count($errors) === 0)
{
//Generate the temporary user
$user = UserModel::repo()->generateGuest($name, $mail);
$user->image = $image;
$user->info = json_decode($info);
if($user->save())
{
// Store the user in session
$this->get('auth')->setGuest($user->id, $user->name, $user->roles);
// Return a success response
return $this->json(array('success' => true));
}
}
// Return an error response
return $this->json(array('success' => false, 'errors' => $errors));
}
public function loginAction()
{
$security = $this->get('security');
$request = $this->get('request');
$config = $this->get('config');
// Redirect if already logged in
if($this->get('user')->getId())
{
return $this->redirect('Admin:index');
}
$errors = false;
$username = '';
if($request->isPost())
{
// Get credentials
$username = $security->escapeString ($request->postVar('name'));
$password = $security->encodePassword($request->postVar('password'));
// Check if user exists and passwords match
$userToken = null;
if(
$username == $config->data['superUser'] &&
$password == $security->encodePassword($config->data['superPass'])
)
{
// Super user
$userToken = array(
'id' => '-1',
'name' => 'admin',
'roles' => array('ADMIN')
);
}
else
{
$userEntry = UserModel::repo()->findOneBy(array('mail' => $username, 'roles' => array('LIKE', '%OPERATOR%')));
if(isset($userEntry->password))
{
if($password == $userEntry->password)
{
$userToken = array(
'id' => $userEntry->id,
'name' => $userEntry->name,
'roles' => $userEntry->roles
);
}
}
}
// Store user's identity in the session
if($userToken)
{
$this->get('auth')->setUser($userToken['id'], $userToken['name'], $userToken['roles']);
// Redirect to admin's panel
return $this->redirect('Admin:index');
}
$errors = true;
}
return $this->render('admin/login.html', array(
'name' => $username,
'errors' => $errors
));
}
public function logoutAction()
{
// Clear user's identity
$this->get('auth')->clearUser();
// Redirect
return $this->redirect('Authentication:login');
}
public function logoutGuestAction()
{
// Clear user's identity
$this->get('auth')->clearGuest();
// Redirect
return $this->json(array('success' => true));
}
}
?>