| Server IP : / Your IP : 10.244.4.16 [ Web Server : nginx/1.25.3 System : Linux escuela-portal-app-54f56585bc-kst6g 5.15.0-1084-azure #93-Ubuntu SMP Sat Mar 15 14:12:29 UTC 2025 x86_64 User : root ( 0) PHP Version : 8.2.13 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals, Domains : 0 Domains MySQL : OFF | cURL : ON | WGET : OFF | Perl : ON | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /var/www/app/app/Models/ |
Upload File : |
<?php
namespace App\Models;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\Cookie;
use Illuminate\Support\Facades\Request;
class User extends Authenticatable
{
use HasFactory, Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name',
'email',
'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password',
'remember_token',
];
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'email_verified_at' => 'datetime',
];
private $platforms = [];
private $permissions = [];
private $access_token = null;
public function __construct($return = false)
{
parent::__construct();
$access_token = Request::ajax() ? Request::header('Authorization') : Session::get('access_token');
$headers = [
'Accept' => "application/json",
'Authorization' => "Bearer " . $access_token,
];
$response = Http::withHeaders($headers)->get(env('PASSPORT_SERVER_CHECK_USER'));
if(@$response->object()->message == "Unauthenticated." || !isset($response->object()->user)) {
if(!$return) {
header('Content-Type: application/json');
echo json_encode([ 'error' => 1, 'message' => "No autorizado." ]); exit;
} else {
return null;
}
}
$result = $response->object();
$this->id = $result->user->id;
$this->name = $result->user->name;
$this->email = $result->user->email;
$this->created_at = $result->user->created_at;
foreach($result->permissions as $permission) {
$this->permissions[] = $permission->permission_code;
}
foreach($result->platforms as $platform) {
$this->platforms[] = $platform;
}
}
public function hasPermission($permission)
{
return in_array($permission, $this->permissions);
}
public function getPermissions()
{
return $this->permissions;
}
public function getPermissionsJSON()
{
return json_encode($this->permissions);
}
public function getPlatformsJSON()
{
return json_encode($this->platforms);
}
public function can($permission, $options = [])
{
if(!in_array($permission, $this->permissions)) {
if(@$options['json'] == true) {
header('Content-Type: application/json');
echo json_encode([ 'error' => 1, 'message' => "No autorizado." ]); exit;
} else {
header('Location: ' . $_SERVER['HTTP_REFERER']);
}
}
}
}