<?php
namespace App\Models;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Laravel\Sanctum\HasApiTokens;
use App\Traits\Uuids;
use Spatie\Permission\Traits\HasRoles;
class Uauth extends Authenticatable
{
use Uuids, HasApiTokens, HasRoles;
protected $table = 'uauths';
protected $connection = 'mysql_licence';
protected $fillable = [
'id',
'telephone',
'email',
'password',
'connection',
'abilitiy',
'created_at',
'updated_at',
];
protected $hidden = [
'id',
'password',
'authable_type',
'authable_id',
'connection',
];
protected $casts = [
'ability' => 'array',
'created_at' => 'datetime:d.m.Y H:i:s',
'updated_at' => 'datetime:d.m.Y H:i:s',
];
public function authable()
{
return $this->morphTo();
}
}
<?php
namespace App\Http\Requests\Sudo;
use App\Http\Requests\BaseRequest;
use App\Rules\Telephone;
class StoreRequest extends BaseRequest
{
public function authorize()
{
return auth('app')->check();
}
protected function prepareForValidation()
{
$this->merge([
'title' => self::title($this->name, $this->surname),
'telephone' => self::clean_phone($this->telephone),
'password' => bcrypt($this->password),
'connection' => 'mysql_licence',
'abilitiy' => 'sudo',
]);
}
public function rules()
{
return [
'name' => 'required',
'surname' => 'required',
'email' => "required|email",
'password' => 'required',
'telephone' => ['required', "unique:mysql_licence.uauths,telephone,$this->telephone", new Telephone],
];
}
public function attributes()
{
return [
'name' => __('Name'),
'surname' => __('Surname'),
'email' => __('Email'),
'password' => __('Password'),
'telephone' => __('Telephone'),
];
}
}
<?php
namespace App\Rules;
use Illuminate\Contracts\Validation\Rule;
class Telephone implements Rule
{
protected $pattern = '/[2,8,5][0,3,4,5,6][0-9]\d\d\d\d\d\d\d$/';
public function passes($attribute, $value)
{
return ($attribute == "telephone") and (preg_match($this->pattern, $value) == 1) and (strlen($value) == 11);
}
public function message()
{
return __('The GSM number entered is incorrect.');
}
}
<?php
namespace App\Http\Controllers\Sudo;
use App\Http\Controllers\Controller;
use App\Http\Requests\Sudo\StoreRequest;
use App\Models\User;
use Illuminate\Http\Request;
class UserController extends Controller
{
public function index()
{
return view('sudo.users.index');
}
public function profile()
{
return view('sudo.users.profile');
}
public function store(StoreRequest $request)
{
if ($request->validated()) {
$user = User::updateOrCreate(['id' => $request->id], $request->only('name', 'surname'));
$user->auth()->updateOrCreate(['authable_id'=>$request->id], $request->only('title', 'email', 'telephone','password','connection','abilitiy'));
}
}
public function dataTable()
{
return [
"draw"=> request('draw'),
"recordsTotal"=> User::count(),
"recordsFiltered"=> User::count(),
'data'=> User::with('auth')->get()->toArray()
];
}
}