Skip to content

Instantly share code, notes, and snippets.

@mahammad
Created December 3, 2021 18:50
Show Gist options
  • Save mahammad/62a77fc0944486d5b4fd4695a0a8fa28 to your computer and use it in GitHub Desktop.
Save mahammad/62a77fc0944486d5b4fd4695a0a8fa28 to your computer and use it in GitHub Desktop.
Laravel Kod Örneklerim

Model Örneği

<?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();
    }
}

Request Örneği

<?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'),
        ];
    }
}

Rule Örneği

<?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.');
    }
}

Controller Kullanımım

<?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()
        ];
    }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment