امروز:دوشنبه ,۱۳۹۷/۱۱/۲۹
Download http://bigtheme.net/joomla Free Templates Joomla! 3
Home / Yii2 / step by step با مدیریت کاربران dektrium-user در yii2

step by step با مدیریت کاربران dektrium-user در yii2

در این آموزش می خوایم یکی از ماژول های خوب برای مدیریت کاربران را معرفی و استفاده کنیم.
برای نصب dectrium-user ابتدا باید کد زیر را در کامپوزر نصب کنید .

composer require "dektrium/yii2-user:0.9.*@dev"

یا می تونین کد زیر را در کامپوزر وارد نمایید و سپس کامپوزر خود را آپدیت کنین

 "require": {
        "php": ">=5.4.0",
        "yiisoft/yii2": ">=2.0.6",
        "yiisoft/yii2-bootstrap": "*",
        "yiisoft/yii2-swiftmailer": "*",
        "kop/yii2-scroll-pager": "dev-master",
        "mohammad-mahdy/yii2-jdate": "*",
        "kartik-v/yii2-widget-rating": "*",
        "۲amigos/yii2-ckeditor-widget": "*",
        "dektrium/yii2-user": "0.9.*@dev",
        "dektrium/yii2-rbac":"1.0.0-alpha@dev"
    },

پس از نصب باید در فولدر vendor فولدر dektrium ایجاد بشه که داخلش فولدر yii2-user وجود داره.
مرحله بعدی اینه که جداولی که برای مدیریتکاربران این ماژول ایجاد می کند را ایجاد کنید
برای ایجاد کد زیر را در cmd کامپوزر اجرا کنید.

php yii migrate/up --migrationPath=@vendor/dektrium/yii2-user/migrations

توجه داشته باشین که جدول user نباید داخل دیتابیس وجود داشته باشه . اگه وجود داشته باشه migration ارور میده و جداول ایجاد نمیشود .
پس از اجرا باید توی cmd همچین نتیجه را ببینید

$ php yii migrate/up --migrationPath=@vendor/dektrium/yii2-user/migrations
Yii Migration Tool (based on Yii v2.0.6)
Total 4 new migrations to be applied:
    m141222_110026_update_ip_field
    m141222_135246_alter_username_length
    m150614_103145_update_social_account_table
    m150623_212711_fix_username_notnull
Apply the above migrations? (yes|no) [no]:yes
*** applying m141222_110026_update_ip_field
    > alter column registration_ip in table {{%user}} to string(45) ... done (time: 0.009s)
*** applied m141222_110026_update_ip_field (time: 0.030s)
*** applying m141222_135246_alter_username_length
    > alter column username in table {{%user}} to string(255) ... done (time: 0.010s)
*** applied m141222_135246_alter_username_length (time: 0.012s)
*** applying m150614_103145_update_social_account_table
    > add column code string(32) to table {{%social_account}} ... done (time: 0.008s)
    > add column created_at integer to table {{%social_account}} ... done (time: 0.009s)
    > add column email string to table {{%social_account}} ... done (time: 0.008s)
    > add column username string to table {{%social_account}} ... done (time: 0.009s)
    > create unique index account_unique_code on {{%social_account}} (code) ... done (time: 0.016s)
*** applied m150614_103145_update_social_account_table (time: 0.059s) 
*** applying m150623_212711_fix_username_notnull
    > alter column username in table {{%user}} to string(255) NOT NULL ... done (time: 0.009s)
*** applied m150623_212711_fix_username_notnull (time: 0.011s)
Migrated up successfully.

خوب مرحله ی بعد اینه که ماژول را توی تنظیمات صدا بزنیم:
اگر از basic استفاده میکنید کد زیر را در comfig/web.php و اگر از advance استفاده می کنید در common/config/main.php

    'modules' => [
 'user' => [
            'class' => 'dektrium\user\Module',
        ],
        ],

همچنین باید مشخص کنید که مدیریت چ کسی است تا بتواند مدیریت کاربران را انجام دهد
که در basic کد زیر را به کد بالا اضافه می کنیم

    'modules' => [
 'user' => [
            'class' => 'dektrium\user\Module',
  'admins' => ['amirajlo']
        ],
        ],

خوب اگر از advance استفاده می کنید برای مدیریت بهتر تنظیمات خود را برای frontendو backend انجام می دهیم
در frontend/config/main.php

'modules' => [
        'user' => [
// following line will restrict access to admin controller from frontend application
            'as frontend' => 'dektrium\user\filters\FrontendFilter',
        ],
    ],

در backend/config/main.php

  'modules' => [
        'user' => [
            // following line will restrict access to profile, recovery, registration and settings controllers from backend
            'as backend' => 'dektrium\user\filters\BackendFilter',
              'admins' => ['amirajlo']
        ],
    ],

نکته این که هنگام نصب با توجه به این که بر روی php من php_intl.dll
نصب نبود سیستم پیام خطا داد. که وقتی نصب کردم اوکی شد
تا اینجا مدیریت کاربران ما فراهم شد.
جهت رسیدن به صفحات به صورت زیر عمل می کنیم
در backend برای دسترسی به مدیریت کاربران backend/user/admin/index
و در frontend
ثبت نام frontend/user/register
لاگین frontend/user/login
پروفایلfrontend/user/profile/show?id=1
,..
اطلاعات بیشتر در سایت خود ماژول :dektrium

خوب تا اینجا مدیریت کاربران انجام شده . یکی دیگه از امکانات این ماژول استفاده از social network هست
به این معنی که می توانید از طریق شبکه های اجتماعی نظیر google+و facebook در سایت ثبت نام کنید
برای انجام این ویژگی ما به googl+ بسنده میکنیم و اینو انجام میدیم
اما برای اطلاعات بیشتر به آدرس خود ماژول مراجعه نمایید

Authentication via social networks
ابتدا باید با استفاده از اکانت جی میل api ثبت کنید

۱٫به لینک زیر بروید
https://console.developers.google.com/project
oauth-google-1

۲٫یک پروژه ایجاد کنید

gdc-new-project

۳٫سمت چپ تصویر منویapi را انتخاب کنید و سپس google+ سرچ کنین
yii2hello

find-google

۴٫
enable Api را انتخاب کنید

enable-google-plus

enabled-api-list

۵٫مرحله ی بعدی ایجاد Credentials می باشد .

gdc-credentials-start

۶٫ بر روی دکمه آبی کلیک کنیدو گزینه ی OAuth 2.0 client ID را انتخاب نمایید
gdc-credentials-start

۷٫ و اطلاعات خواسته شده را پر نمایید
credentials-blacked

۸٫پس از ذخیره کردن از شما می خواهد نوع آن را مشخص نمایید که web application را انتخاب می کنیم
create-client-id

۹٫در این مرحله تنظیمات اصلی شامل دو گزینه است
اولی Authorized JavaScript origins
که باید آدرس سایت را بدهید به این صورت
http://localhost:8888 یا مثلا http://google.com
دومیAuthorized redirect URIs
که مسیر لاگین سایت به وسیله google api هست
http://localhost:8888/user/security/auth?authclient=google یا
http://google.com/user/security/auth?authclient=google
در آخر به شما client id و client secret تولید شده را نمایش می دهد .
client-id-result

خوب برای استفاده از این امکان basic بconfig/web.php و در advance در common/config/main.php
در قسمت component کد زیر را وارد کنید

  'authClientCollection' => [
            'class' => \yii\authclient\Collection::className(),
            'clients' => [
                'google' => [
                    'class' => 'dektrium\user\clients\Google',
                    'clientId' => '889147023194-p930c275h1q8vdq11qvepe78gsdtj23k.apps.googleusercontent.com',
                    'clientSecret' => 'bOkNGmysM3TwEcYUQRtnpQKx',
                ],
            ],
        ],

client secret و clientId ای که پس از مراحل بالا به دست آوردید.

خوب ماحل به پایان رسید به منوی ورود به سایت رفته و از طریق اکانت گوگل خود وارد سایت شوید
signup

sign-in-connect

logged-in

نکته :
برای تنظیم api در گوگل من از سایت های زیر استفاده کردم :
https://code.tutsplus.com/tutorials/how-to-program-with-yii2-google-authentication–cms-24987
https://developers.google.com/identity/sign-in/web/devconsole-project

Check Also

سایت چند زبانه با فریم ورک yii

سایت چند زبانه با فریم ورک yii مطلب که در این بخش قصد آموزش داریم …

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *