erenmustafaozdal / laravel-user-module
laravel 5.1 user, role and auth module package
Requires
- php: >=5.5.9
- erenmustafaozdal/laravel-modules-base: ~0.1
- illuminate/support: ~5
This package is not auto-updated.
Last update: 2024-11-23 19:43:08 UTC
README
Laravel User Module, Laravel 5.1 projelerinde kullanıcı, rol ve giriş işlemlerini kapsayan bir modül paketidir. Bu paket kullanıcı arayüzü (views) hariç, arka plandaki bütün işlemleri barındırmaktadır. İstersen görünümleri kapsayan Laravel Modules Core paketini kullanarak, modüle tam kapsamıyla sahip olabilirsin.
Kurulum
Composer ile yüklemek için aşağıdaki kodu kullanabilirsin.
composer require erenmustafaozdal/laravel-user-module
Ya da composer.json
dosyana, aşağıdaki gibi ekleme yapıp, paketleri güncelleyebilirsin.
{ "require": { "erenmustafaozdal/laravel-user-module": "~0.1" } }
$ composer update
Bu işlem bittikten sonra, service provider'i projenin config/app.php
dosyasına eklemelisin.
ErenMustafaOzdal\LaravelUserModule\LaravelUserModuleServiceProvider::class,
❗ Eğer Laravel Modules Core paketini kullanacaksan, o paketin service provider dosyasını üstte tanımlamalısın.
Dosyaların Yayınlanması
Laravel User Module paketinin dosyalarını aşağıdaki kodla yayınlamalısın.
php artisan vendor:publish --provider="ErenMustafaOzdal\LaravelUserModule\LaravelUserModuleServiceProvider"
Migration
Dosyaları yayınladıktan sonra migration işlemi yapmalısın.
❗ Migration işleminden önce Laravel'in varsayılan migration dosyalarını silmelisin. Sentinel kendi migration dosyalarını ekleyecek.
❗ Sentinel'e ait
...migration_cartalyst_sentinel.php
dosyasında Laravel User Module'e özgü bazı değişiklikler yapmalısın.users
tablosunun sütunlarının belirlendiği satırlarda,last_name
sütunundan sonra aşağıdaki gibi ekleme yapmalısın.
$table->string('last_name')->nullable(); // bu satırdan sonra $table->boolean('is_active')->default(0); // bu satırı eklemelisin $table->boolean('is_super_admin')->default(0); // bu satırı da eklemelisin $table->string('photo')->nullable(); // ve arkasından bu satırı
Daha sonra migrate işlemini yapabilirsin.
php artisan migrate
❗ Kullanıcının başarılı kayıt işlemi sonrasında tetiklenen olay ile, kullanıcıya aktivasyon e-postası göndermek gibi bazı işlemler için;
ErenMustafaOzdal\LaravelUserModule\Listeners\LaravelUserModuleListener
dinleyicisiniApp\Providers\EventServiceProvider
içinde$subscribe
dizi özelliğine eklemelisin.
protected $subscribe = [ 'ErenMustafaOzdal\LaravelUserModule\Listeners\LaravelUserModuleListener', ];
config/laravel-user-module.php
dosyasından aktivasyon e-posta blade dosyasını değiştirebilirsin.
Aktivasyon epostası blade dosyasına kullanıcı bilgileri (
user
) ve Sentinel Aktivasyon nesnesi gönderilmektedir (activation
). Sentinel Aktivasyon nesnesinden$activation->code
şeklinde kodu eposta içindeki aktivasyon bağlantısına ekleyebilirsin.
❗ Paketin bağımlılıklarından Sentinel ayar dosyasında (
config/cartalyst.sentinel.php
) users ve roles model değerlerini güncellemelisin.
'users' => [ 'model' => 'App\User', ], 'roles' => [ 'model' => 'App\Role', ],
Son olarak App\User
ve App\Role
modellerini uygun bir şekilde tanımlamalısın. Bunun için App\User
modelini ErenMustafaOzdal\LaravelUserModule\User
modelinden, App\Role
modelini ErenMustafaOzdal\LaravelUserModule\Role
modelinden genişletmelisin.
namespace App; use ErenMustafaOzdal\LaravelUserModule\User as EMOUser; class User extends EMOUser { // }
namespace App; use ErenMustafaOzdal\LaravelUserModule\Role as EMORole; class Role extends EMORole { // }
Kullanım
Kurulum tamamlandığında; Laravel Modules Core paketini de dahil ettiysen, proje.dev/login
adresinden tüm haliyle seni bekliyor olacak.
❗ metinler yanlış görünüyorsa, Laravel Modules Core paketinin İngilizce dil dosyaları hazır olmadığı içindir. Bu sebeple projenin
config/app.php
dosyasında'locale' => 'tr'
tanımlaması yapmalısın.
❗ ilk kullanıcı ile giriş yaptığında hiçbir rotaya erişemeyeceksin. Bunu engellemek için veri tabanında
is_super_admin
sütununu 1 olarak tanımlamalısın. bu şekilde bütün izinlere sahip olarak işlemlere devam edebilirsin.
Ayar Dosyası
Genel Ayarlar
Paketin içinde kullanılan genel ayarlar. Ayar dosyası içinde kök alanda bulunan ayarlar.
URL Ayarları
Tarayıcının adres çubuğunda görünecek adreslerin tanımlandığı ayarlar. Ayar dosyasının url
alanında bulunan ayarlardır.
Örneğin:
activate_route
ayarı ile aktivasyon sayfası adresiaccount-activate
şeklinde tanımlanmıştır. Bu şekilde adres çubuğunda şuna benzer bir görünüm olacaktır:www.siteadi.com/account-activate/{id}/{code}
Görünüm Ayarları
Paketin kullanacağı görünümlerin tanımlandığı ayarlardır. Ayar dosyasının views
alanı altında bulunan ayarlardır. Buradaki değerler varsayılan olarak Laravel Modules Core paketinin görünümlerine tanımlıdır.
Model Ayarları
Paket içinde kullanılan modeller ile ilgili bazı ayarlamalar. Şu an için sadece User
modeli ayarları mevcut. Ve bu ayar da; ayar dosyasının user
alanında bulunmaktadır.
Görünüm Tasarlama
Paket Laravel Modules Core paketiyle beraber direkt kullanıma hazırdır. Ancak istersen kendine özel görünümlerde tasarlayabilirsin. Bu bölüm özel tasarımlar için bir rehberdir.
Model Kullanımı
Görünümler içinde User
ve Role
modellerinin özellik ve metot kullanımı hakkında bilgileri kapsamaktadır. Bu metotlar ve özellikler App\User
ve App\Role
içinde üzerine yazılarak değiştirilebilir.
User
####### Genel Özellikler
- protected $table = 'users'
- protected $fillable = ['first_name', 'last_name', 'email', 'password', 'is_active', 'photo','permissions']
- protected $hidden = ['password', 'remember_token']
####### $user->getPhoto()
Kullanıcı fotoğrafını HTLM img
etiketi ile veya sadece url olarak geri döndürür. Eğer fotoğraf yoksa, varsayılan fotoğrafı geri döndürür
####### $user->first_name string
Baş harfi büyük şekilde kullanıcı ilk adı
####### $user->last_name string
Bütün harfler büyük şekilde kullanıcı soyadı
####### $user->fullname string
Kullanıcı ilk ve soyadı birleşimi
####### $user->is_active boolean
Kullanıcının aktif olup olmadığını döndürür
####### $user->last_login string
Kullanıcının son giriş yaptığı tarihi ayar dosyasındaki tanıma göre döndürür
####### $user->last_login_for_humans string
Kullanıcının son giriş yaptığı tarihi okunaklı veri şeklinde döndürür. Örneğin: 1 hafta önce
####### $user->last_login_table array
Kullanıcının son giriş yaptığı tarihi display
(last_login_for_humans) ve timestamp
şeklinde tutulan bir dizi şeklinde döndürür. Datatable'da kullanılması amacıyla oluşturulmuştur
####### $user->permissions array
Kullanıcı işlem izinlerini dizi şeklinde döndürür
####### $user->permission_collect Collection
Kullanıcı işlem izinlerini Collection objesi şeklinde döndürür
####### $user->created_at string
Kullanıcının kayıt tarihini ayar dosyasındaki tanıma göre döndürür
####### $user->created_at_for_humans string
Kullanıcının kayıt tarihini okunaklı veri şeklinde döndürür. Örneğin: 1 hafta önce
####### $user->created_at_table array
Kullanıcının kayıt tarihini display
(last_login_for_humans) ve timestamp
şeklinde tutulan bir dizi şeklinde döndürür. Datatable'da kullanılması amacıyla oluşturulmuştur
####### $user->updated_at string
Kullanıcının güncellenme tarihini ayar dosyasındaki tanıma göre döndürür
####### $user->updated_at_for_humans string
Kullanıcının güncellenme tarihini okunaklı veri şeklinde döndürür. Örneğin: 1 hafta önce
####### $user->updated_at_table array
Kullanıcının güncellenme tarihini display
(last_login_for_humans) ve timestamp
şeklinde tutulan bir dizi şeklinde döndürür. Datatable'da kullanılması amacıyla oluşturulmuştur
Role
####### Genel Özellikler
- protected $table = 'roles'
- protected $fillable = ['name', 'slug', 'permissions']
####### $role->name_uc_first string
Baş harfi büyük şekilde kullanıcı rolü adı
####### $role->slug string
Kullanıcı rolü url formatındaki hali
####### $role->permissions array
Kullanıcı rolü işlem izinlerini dizi şeklinde döndürür
####### $role->permission_collect Collection
Kullanıcı rolü işlem izinlerini Collection objesi şeklinde döndürür
####### $role->created_at string
Kullanıcı rolünün kayıt tarihini ayar dosyasındaki tanıma göre döndürür
####### $role->created_at_for_humans string
Kullanıcı rolünün kayıt tarihini okunaklı veri şeklinde döndürür. Örneğin: 1 hafta önce
####### $role->created_at_table array
Kullanıcı rolünün kayıt tarihini display
(last_login_for_humans) ve timestamp
şeklinde tutulan bir dizi şeklinde döndürür. Datatable'da kullanılması amacıyla oluşturulmuştur
####### $role->updated_at string
Kullanıcı rolünün güncellenme tarihini ayar dosyasındaki tanıma göre döndürür
####### $role->updated_at_for_humans string
Kullanıcı rolünün güncellenme tarihini okunaklı veri şeklinde döndürür. Örneğin: 1 hafta önce
####### $role->updated_at_table array
Kullanıcı rolünün güncellenme tarihini display
(last_login_for_humans) ve timestamp
şeklinde tutulan bir dizi şeklinde döndürür. Datatable'da kullanılması amacıyla oluşturulmuştur
Rotalar
Laravel User Module paketi CRUD işlemleri için sahip olduğu rotaların dışında, ajax
ile işlem yapabileceğin birçok rotaya da sahiptir. Görünümlerini tasarlarken bunları kullanabilirsin.
Rotalarda kullanılabilecek form elemanları bir sonraki bölümde anlatılacaktır.
Giriş - Çıkış - Kayıt Rotaları
Giriş, çıkış, kayıt, şifre hatırlatma vb. işlemler için kullanılan rotalardır.
Kullanıcı Rotaları
Başta kullanıcı CRUD işlemleri olmak üzere, bir kısım ajax işlemini de kapsayan rotalar.
Kullanıcı Rolü Rotaları
Başta kullanıcı rolü CRUD işlemleri olmak üzere, bir kısım ajax işlemini de kapsayan rotalar.
Form Alanları
İşlemler sırasında görünümlerinde kullanacağın form elemanları veri tabanı tablolarındaki sütun isimleriyle aynı olmalıdır. Aşağıda her işlem için gereken eleman listesi verilmiştir.
❗ Aşağıda belirtilen form isimleri kullanılması zorunlu olup, sırası değişebilir.
lang/.../validation.php
dosyanda bu form isimlerinin metin değerlerini belirtmeyi unutma! Ayrıca her dil için validation dosyası oluşturmalısın.
Giriş - Çıkış - Kayıt Formları
register
işlemi form elemanları- first_name
- last_name
- password
- password_confirmation
- terms
RegisterRequest
public function rules() { return [ 'first_name' => 'required|max:255', 'last_name' => 'required|max:255', 'email' => 'required|unique:users|email|max:255', 'password' => 'required|confirmed|min:6|max:255', 'terms' => 'required|in:1|accepted' ]; }
login
işlemi form elemanları- password
- remember
LoginRequest
public function rules() { return [ 'email' => 'required|email|max:255', 'password' => 'required|min:6|max:255', ]; }
forgetPassword
işlemi form elemanları
ForgetPasswordRequest
public function rules() { return [ 'email' => 'required|email|max:255', ]; }
resetPassword
işlemi form elemanları- password
- password_confirmation
ResetPasswordRequest
public function rules() { return [ 'email' => 'required|email|max:255', 'password' => 'required|confirmed|min:6|max:255', ]; }
Kullanıcı Formları
store
işlemi form elemanları- first_name
- last_name
- password
- password_confirmation
- photo
- x (fotoğraf kırpılacaksa; kırpılacak halin sol üst köşe konumu x değeri)
- y (fotoğraf kırpılacaksa; kırpılacak halin sol üst köşe konumu y değeri)
- width (fotoğraf kırpılacaksa; kırpılacak halin width değeri)
- height (fotoğraf kırpılacaksa; kırpılacak halin height değeri)
- permissions
StoreRequest
public function rules() { return [ 'first_name' => 'required|max:255', 'last_name' => 'required|max:255', 'email' => 'required|unique:users|email|max:255', 'password' => 'required|confirmed|min:6|max:255', 'photo' => 'max:5120|image|mimes:jpeg,jpg,png', 'x' => 'integer', 'y' => 'integer', 'width' => 'integer', 'height' => 'integer', 'permissions' => 'array', ]; }
update
işlemi form elemanları- first_name
- last_name
- password
- password_confirmation
- photo
- x (fotoğraf kırpılacaksa; kırpılacak halin sol üst köşe konumu x değeri)
- y (fotoğraf kırpılacaksa; kırpılacak halin sol üst köşe konumu y değeri)
- width (fotoğraf kırpılacaksa; kırpılacak halin width değeri)
- height (fotoğraf kırpılacaksa; kırpılacak halin height değeri)
- permissions
UpdateRequest
public function rules() { return [ 'first_name' => 'required|max:255', 'last_name' => 'required|max:255', 'slug' => 'email|max:255|unique:users,slug,'.$this->segment(3), 'password' => 'confirmed|min:6|max:255', 'photo' => 'max:5120|image|mimes:jpeg,jpg,png', 'x' => 'integer', 'y' => 'integer', 'width' => 'integer', 'height' => 'integer', 'permissions' => 'array', ]; }
changePassword
işlemi form elemanları- password
- password_confirmation
PasswordRequest
public function rules() { return [ 'password' => 'required|confirmed|min:6|max:255' ]; }
permission
işlemi form elemanları- permissions
PermissionRequest
public function rules() { return [ 'permissions' => 'array' ]; }
-
Api
index
filtreleme işlemi verileri- action=filter
- id
- first_name
- last_name
- status (is_active sütunu filtrelemesi için; 1 veya 0)
- created_at_from
- created_at_to
-
Api
store
işlemi verileri, yukarıdaki store işlemi ile aynıdır. Sadece fotoğraf verileri kullanılmaz -
Api
update
işlemi verileri, yukarıdaki update işlemi ile aynıdır. Sadece fotoğraf verileri kullanılmaz -
Api
group
işlemi verileri- action=activate|not_activate|destroy
- id (array şeklinde model id'leri)
-
Api
avatarPhoto
işlemi verileri,- photo
- x (fotoğraf kırpılacaksa; kırpılacak halin sol üst köşe konumu x değeri)
- y (fotoğraf kırpılacaksa; kırpılacak halin sol üst köşe konumu y değeri)
- width (fotoğraf kırpılacaksa; kırpılacak halin width değeri)
- height (fotoğraf kırpılacaksa; kırpılacak halin height değeri)
PhotoRequest
public function rules() { return [ 'photo' => 'required|max:5120|image|mimes:jpeg,jpg,png', 'x' => 'integer', 'y' => 'integer', 'width' => 'integer', 'height' => 'integer', ]; }
Kullanıcı Rolü Formları
store
işlemi form elemanları- name
- slug
- permissions
StoreRequest
public function rules() { return [ 'name' => 'required|max:255', 'slug' => 'alpha_dash|max:255|unique:roles', 'permissions' => 'array', ]; }
update
işlemi form elemanları- name
- slug
- permissions
UpdateRequest
public function rules() { return [ 'name' => 'max:255', 'slug' => 'alpha_dash|max:255|unique:roles,slug,'.$this->segment(3), 'permissions' => 'array', ]; }
-
Api
index
filtreleme işlemi verileri- action=filter
- id
- name
- slug
- created_at_from
- created_at_to
-
Api
store
işlemi verileri, yukarıdaki store işlemi ile aynıdır -
Api
update
işlemi verileri, yukarıdaki update işlemi ile aynıdır -
Api
group
işlemi verileri- action=destroy
- id (array şeklinde model id'leri)
-
Api
models
işlemi verileri- query (metin şeklinde gönderilir ve
name
,slug
alanlarındalike
yöntemi ile filtreleme yapar)
- query (metin şeklinde gönderilir ve
İşlem İzin Formları
Hem kullanıcı hem de rol işlem izinleri formu oluşturmak çok kolaydır. Laravel User Module bu işlem için ErenMustafaOzdal\LaravelUserModule\Services\PermissionService
sınıfını kullanmaktadır. Bu sınıf admin
ve api
rota adı başlangıcına sahip tüm tanımlı rotaları alır ve Collection
türünde döndürür. Bu şekilde izinleri checkbox ile foreach kullanarak listeleyebilirsin. Örnek kullanım için öncelikle formu oluşturacağın blade dosyasına bu sınıfı enjekte et, daha sonra da listeleme yap.
@inject('permission', 'ErenMustafaOzdal\LaravelUserModule\Services\PermissionService') <ul> @foreach($permission->groupByController() as $namespace => $routes) <li> <span class="route-name">{!! $route['route'] !!}</span> {!! Form::checkbox( "permissions[{$route['route']}]", true, isset($permissions[$route['route']]) ) !!} </li> @endforeach </ul>
$permission->getCollection()
Illuminate\Routing\RouteCollection
türünden bir liste döndürür
$permission->getNames()
Illuminate\Support\Collection
türünden bir liste döndürür. Bu listenin all
anahtarında bütün rotalar yer alır. admin
ve api
anahtarlarında ise ilgili rota listeleri yer alır.
$permission->getSpecificNames($prefix)
Illuminate\Support\Collection
türünden bir liste istenen ön ada sahip rota ismi listesi döndürür. Örneğin: api
$permission->getNameParts()
Illuminate\Support\Collection
türünden bir liste döndürür. $permission->getNames()
metodundan tek farkı all
anahtarı olmayışıdır.
$permission->getAllNames()
Illuminate\Support\Collection
türünden bir liste döndürür. Sadece all
anahtarındaki listeyi barındırır.
$permission->groupByController()
Illuminate\Support\Collection
türünden Controller türüne göre gruplandırılmış şekilde bütün rotaları döndürür
$permission->permissionCount()
İşlem izin sayısını, yani rota ismi sayısını döndürür
$permission->permissionRate($count)
Metoda gönderilen kullanıcı veya kullanıcı rolü izinli işlem sayısı sonucunda; yüzde kaç yetkiye sahip olduğunu döndürür. Döndürdüğü değer türü: integer
Onaylamalar
Laravel User Module paketi yapılan her form isteği için onaylama kurallarını belirlemiştir. Bu tür form istek onaylama kuralları için yapman gereken bir şey yoktur. Yukarıda Request
sınıflarının rules
metotlarında açıklamaları yapılmıştır.
Olaylar
Paket içindeki hemen hemen tüm işlemler belli bir olayı tetikler. Sen kendi listener dosyanda bu olayları dinleyebilir ve tetiklendiğinde istediğin işlemleri kolay bir şekilde yapabilirsin.
Giriş - Çıkış - Kayıt Olayları
Kullancı Olayları
Kullancı Rolü Olayları
Lisans
MIT