Share This
//Hướng dẫn xây dựng “Simple ACL” Trong Laravel

Hướng dẫn xây dựng “Simple ACL” Trong Laravel

Việc xác thực của Laravel (authentication) cung cấp 1 giải pháp đơn giản hóa cho việc đăng ký, đăng nhập, đăng xuất, và reset mật khẩu cũng như triển khai nó một cách nhanh chóng và dễ dàng hơn cho ứng dụng web.

Tuy nhiên nếu bạn cần kiểm soát quyền truy cập vào một số phần của trang web, hoặc bật tắt từng phần cụ thể của một trang cho người không phải quản trị viên, hoặc đảm bảo một người nào đó chỉ có thể chỉnh sửa danh bạ của riêng mình, bạn cần xây dựng ACL: Access Control Lists trên laravel (từ version Laravel 5.1.11 trở đi).

Để xây dựng 1 ACL cho ứng dụng chúng ta dùng Class Gate đã được xây dựng sẵn và tích hợp vào các phiên bản laravel từ 5.1.11 trở đi. Class Gate cho phép bạn kiểm tra một user (hoặc người sử dụng đang đăng nhập hoặc một người dùng cụ thể nào đó)  là “được phép” để làm một điều gì đó. Chúng ta cùng xem code mẫu bên dưới:
if (Gate::denies(‘update-contact’, $contact)) {
abort(403);
}
Bỏ code trên vào controller của bạn và kiểm tra user đang đăng nhập có bị từ chối quyền update-contact hay không, chúng ta có thể dùng Gate::allows để làm việc ngược lại.

ACL của laravel xây dựng dựa trên khái kiệm “Ability“. 1 Ability là 1 key (vd update-contact).

ĐỊNH NGHĨA 1 Ability CHO ACL

Định nghĩa 1 “Ability” trong vị trí mặc định, AuthServiceProvider.

class AuthServiceProvider extends ServiceProvider
{
public function boot(GateContract $gate)
{
parent::registerPolicies($gate);
$gate->define(‘update-contact’, function ($user, $contact) {
return $user->id === $contact->user_id;
});
}}

Và kiểm tra

if (Gate::denies('update-contact', $contact)) {
    abort(403);
}

1 khái niệm khác chúng ta nên tham khảo là Policies, thay vì phải viết trực tiếp quá nhiều các định nghĩa vào AuthServiceProvider, chúng ta có thể xây dựng tập hợp nhiều class Policies.

Chạy command line
php artisan make:policy ContactPolicy

sẽ tự động tạo file ContactPolicy vào folder  app/Policies với nội dung được tạo tự động.

<?php

namespace App\Policies;

class ContactPolicy
{
    /**
     * Create a new policy instance.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }
     //viết thêm phương thức update
    public function update($user, $contact)
    {
        return $user->id === $contact->user_id;
    }
}

Chúng ta đăng ký class vào AuthServiceProvider 

class AuthServiceProvider extends ServiceProvider
{
    protected $policies = [
        Contact::class => ContactPolicy::class,
    ];

và bây giờ chúng ta có thể đặt vào controller để kiểm tra

if (Gate::denies('update', $contact)) {
    abort(403);
}

ỨNG TUYỂN







    Chế độ phúc lợi

    CHÍNH SÁCH LƯƠNG & THƯỞNG

    Thấu hiểu tâm tư nguyện vọng của nhân viên, công ty Rivercrane Việt Nam đặc biệt thiết lập chế độ xét tăng lương định kỳ 2lần/năm. Xét đánh giá vào tháng 06 và tháng 12 hàng năm và thay đổi lương vào tháng 01 và tháng 07 hàng năm. Ngoài ra, nhân viên còn được thưởng thành tích định kỳ cho các cá nhân xuất sắc trong tháng, năm.

    CHẾ ĐỘ ĐÀO TẠO TẠI NHẬT

    Luôn luôn mong muốn các kỹ sư và nhân viên trong công ty có cái nhìn toàn diện về lập trình những mảng kỹ thuật trên thế giới, công ty Rivercrane Việt Nam quyết định chế độ 3 tháng 1 lần đưa nhân viên đi học tập tại Nhật. Các bạn kỹ sư hoàn toàn đều có thể quyết định khả năng phát triển bản thân theo hướng kỹ thuật hoặc theo hướng quản lý.

    CHẾ ĐỘ ĐI DU LỊCH HÀNG NĂM

    Không chỉ đưa đến cho nhân viên những công việc thử thách thể hiện bản thân, công ty Rivercrane Việt Nam muốn nhân viên luôn thích thú khi đến với những chuyến hành trình thú vị hàng năm. Những buổi tiệc Gala Dinner sôi động cùng với những trò chơi Team Building vui nhộn sẽ giúp cho đại gia đình Rivercrane thân thiết hơn.

    CHẾ ĐỘ EVENT CÔNG TY

    Những hoạt động Team building, Company Building, Family Building, Summer Holiday, Mid-Autumn Festival… sẽ là những khoảnh khắc gắn kết đáng nhớ của mỗi một nhân viên trong từng dự án, hoặc sẽ là những điều tự hào khi giới thiệu công ty mình với với gia đình thân thương, cùng nhau chia sẻ yêu thương với thông điệp “We are One”

    BẢO HIỂM

    Công ty Rivercrane Việt Nam đảm bảo tham gia đầy đủ chế độ Bảo hiểm xã hội, bảo hiểm y tế và bảo hiểm thất nghiệp. Cam kết chặt chẽ về mọi thủ tục phát sinh công ty đều hỗ trợ và tiến hành cho nhân viên từ đầu đến cuối. Những chế độ bảo hiểm khác công ty cũng đặc biệt quan tâm và từng bước tiến hành.

    CHẾ ĐỘ PHÚC LỢI KHÁC

    Hỗ trợ kinh phí cho các hoạt động văn hóa, văn nghệ, thể thao; Hỗ trợ kinh phí cho việc mua sách nghiên cứu kỹ thuật; Hỗ trợ kinh phí thi cử bằng cấp kỹ sư, bằng cấp dành cho ngôn ngữ. Hỗ trợ kinh phí tham gia các lớp học về quản lý kỹ thuật bên ngoài; Các hỗ trợ phúc lợi khác theo quy định công ty…

    CÔNG VIỆC TƯƠNG TỰ

    © 2012 RiverCrane Vietnam. All rights reserved.

    Close