<?php

/**
 * @author Gabriel <anhaia.gabriel@email.com>
 */
class Auth
{
    private $ci;

    public function __construct()
    {
        $this->ci = &get_instance();
    }

    /**
     * Valida se o usuário está logado.
     *
     * @return boolean
     */
    public function checkLogin()
    {
        if (empty($this->ci->session->auth)) {
            return false;
        }

        return true;
    }

    /**
     * Valida se o usuário possui permissão através de uma lista de tipos de usuários.
     *
     * @param string[] $permissions Tipos de permissões a serem validadas.
     *
     * @return bool
     */
    public function checkPermission($permissions)
    {
        if (!is_array($permissions)) {
            $permissions = [$permissions];
        }

        if (!in_array($this->ci->session->auth->tipo, $permissions)) {
            return false;
        }

        return true;
    }

    /**
     * Verifica se o usuário está logado e possuí permissões de acesso.
     * Caso não esteja logado então redireciona para tela de login.
     * Caso não possua permissão então redireciona para Home.
     *
     * @param string[] $permissions Lista de tipos de usuários permitidos,
     */
    public function check($permissions)
    {
        if (!$this->checkLogin()) {
            redirect('login');
        }

        if (!$this->checkPermission($permissions)) {
            redirect('home');
        }
    }
}