<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Laravel Archives - Hi You, I am Tade</title>
	<atom:link href="https://hoangthuc.com/tag/laravel/feed/" rel="self" type="application/rss+xml" />
	<link>https://hoangthuc.com/tag/laravel/</link>
	<description></description>
	<lastBuildDate>Sat, 17 Feb 2024 03:59:03 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://hoangthuc.com/wp-content/uploads/2024/02/logoTH-2-150x150.png</url>
	<title>Laravel Archives - Hi You, I am Tade</title>
	<link>https://hoangthuc.com/tag/laravel/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Chuyển thư mục public sang public_html trong Laravel khi deploy</title>
		<link>https://hoangthuc.com/chuyen-thu-muc-public-sang-public_html-trong-laravel-khi-deploy/</link>
					<comments>https://hoangthuc.com/chuyen-thu-muc-public-sang-public_html-trong-laravel-khi-deploy/#comments</comments>
		
		<dc:creator><![CDATA[Hoàng Thức]]></dc:creator>
		<pubDate>Fri, 04 Dec 2020 11:29:53 +0000</pubDate>
				<category><![CDATA[Laravel]]></category>
		<category><![CDATA[Php]]></category>
		<guid isPermaLink="false">https://hoangthuc.com/?p=694</guid>

					<description><![CDATA[<p>Hi All, mình viết bài viết này vì mình cũng gặp tình trạng tương tự khi deploy lên host và nó báo sai đường dẫn khá nhiều trong source của mình.  Mình đăng bài này để lưu lại sau này khỏi quên. :)))  Đầu tiên thư mục mặc định nó sẽ có dạng và chúng [&#8230;]</p>
<p>The post <a href="https://hoangthuc.com/chuyen-thu-muc-public-sang-public_html-trong-laravel-khi-deploy/">Chuyển thư mục public sang public_html trong Laravel khi deploy</a> appeared first on <a href="https://hoangthuc.com">Hi You, I am Tade</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><span style="font-family: helvetica, arial, sans-serif;">Hi All, mình viết bài viết này vì mình cũng gặp tình trạng tương tự khi deploy lên host và nó báo sai đường dẫn khá nhiều trong source của mình. </span></p>
<p><span style="font-family: helvetica, arial, sans-serif;">Mình đăng bài này để lưu lại sau này khỏi quên. :))) </span></p>
<p><span style="font-family: helvetica, arial, sans-serif;">Đầu tiên thư mục mặc định nó sẽ có dạng và chúng ta cần chuyển nó thành public_html rồi đẩy lên host. 1 số host như cpanel bạn cầu hình luôn cái đường dẫn luôn cho nhanh nhé.</span></p>
<p><span style="font-family: helvetica, arial, sans-serif;"><img fetchpriority="high" decoding="async" class="size-full wp-image-695 aligncenter" src="https://hoangthuc.com/wp-content/uploads/2020/12/2020-12-04_182003.jpg" alt="" width="841" height="303" srcset="https://hoangthuc.com/wp-content/uploads/2020/12/2020-12-04_182003.jpg 841w, https://hoangthuc.com/wp-content/uploads/2020/12/2020-12-04_182003-300x108.jpg 300w" sizes="(max-width: 841px) 100vw, 841px" /></span></p>
<p><span style="font-family: helvetica, arial, sans-serif;">Sẽ có 4 chỗ mấy bạn cần chỉnh sửa.</span></p>
<pre> </pre>
<pre> </pre>


<h5>./server.php</h5>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
if ($uri !== '/' &amp;&amp; file_exists(__DIR__.'public'.$uri)) { return false; } require_once __DIR__.'/public/index.php';
</pre></div>


<h5>./app/Providers/AppServiceProvider.php</h5>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
public function register() { $this-&gt;app-&gt;bind(&#039;path.public&#039;, function() { return base_path().&#039;/public_html&#039;; }); }
</pre></div>


<h5><strong>./config/filesystems.php</strong></h5>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
&#039;public&#039; =&gt; &#x5B;
  &#039;driver&#039; =&gt; &#039;local&#039;,
  &#039;root&#039; =&gt; storage_path(&#039;app/public&#039;),
  &#039;url&#039; =&gt; env(&#039;APP_URL&#039;).&#039;/storage&#039;,
  &#039;visibility&#039; =&gt;&#039;public&#039;,
],
</pre></div>


<h5><span style="font-family: helvetica, arial, sans-serif;">./webpack.mix.js</span></h5>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
mix.config.publicPath='public_html'; mix.js('resources/assets/js/app.js', 'public_html/js') .sass('resources/assets/sass/app.scss', 'public_html/css');
</pre></div>


<h5>./htaccess for directadmin </h5>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
&amp;lt;IfModule mod_rewrite.c&gt;
    &amp;lt;IfModule mod_negotiation.c&gt;
        Options -MultiViews -Indexes
    &amp;lt;/IfModule&gt;
  RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 &#x5B;L,R=301]

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php &#x5B;L]
&amp;lt;/IfModule&gt;
</pre></div>




<pre class="wp-block-preformatted"><strong>Done nhe!</strong></pre>



<p>Nguồn : Developer How To.&nbsp;</p>
<p>The post <a href="https://hoangthuc.com/chuyen-thu-muc-public-sang-public_html-trong-laravel-khi-deploy/">Chuyển thư mục public sang public_html trong Laravel khi deploy</a> appeared first on <a href="https://hoangthuc.com">Hi You, I am Tade</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://hoangthuc.com/chuyen-thu-muc-public-sang-public_html-trong-laravel-khi-deploy/feed/</wfw:commentRss>
			<slash:comments>49</slash:comments>
		
		
			</item>
		<item>
		<title>Phân quyền trong Laravel với Laravel permission</title>
		<link>https://hoangthuc.com/phan-quyen-trong-laravel-voi-laravel-permission/</link>
					<comments>https://hoangthuc.com/phan-quyen-trong-laravel-voi-laravel-permission/#comments</comments>
		
		<dc:creator><![CDATA[Hoàng Thức]]></dc:creator>
		<pubDate>Tue, 04 Aug 2020 16:41:29 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Laravel]]></category>
		<category><![CDATA[Php]]></category>
		<guid isPermaLink="false">https://hoangthuc.com/?p=658</guid>

					<description><![CDATA[<p>Laravel permission cho phép chúng ta chia ra 2 thành phần là Vai trò (role) và quyền (permission). 1.Cài đặt Cài đặt Laravel 5.8 hoặc cao hơn Nếu bạn đang có sẵn file config/permission.php bạn phải đổi tên hoặc xóa ngay, bởi vì khi setup thì package sẽ được publishes vào config/permission.php Nếu thỏa mãn 2 điều kiện [&#8230;]</p>
<p>The post <a href="https://hoangthuc.com/phan-quyen-trong-laravel-voi-laravel-permission/">Phân quyền trong Laravel với Laravel permission</a> appeared first on <a href="https://hoangthuc.com">Hi You, I am Tade</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Laravel permission cho phép chúng ta chia ra 2 thành phần là Vai trò (role) và quyền (permission).</p>
<p><strong>1.Cài đặt</strong></p>
<ul>
<li>Cài đặt Laravel 5.8 hoặc cao hơn</li>
<li>Nếu bạn đang có sẵn file <code>config/permission.php</code> bạn phải đổi tên hoặc xóa ngay, bởi vì khi setup thì package sẽ được publishes vào <code>config/permission.php</code></li>
</ul>
<p>Nếu thỏa mãn 2 điều kiện trên rồi chúng ta chạy câu lệnh dưới:</p>
<pre class="brush: php; title: ; notranslate">

composer require spatie/laravel-permission

</pre>
<p>Sau đó, trong <code>config/app.php</code> chúng ta add service provide cho package như sau:</p>
<pre class="brush: php; title: ; notranslate">

'providers' =&amp;gt; &#x5B; // ... Spatie\Permission\PermissionServiceProvider::class, ];

</pre>
<p>Sau đó, publish migration thông qua lệnh:</p>
<pre class="brush: php; title: ; notranslate">

php artisan vendor:publish --provider=&amp;quot;Spatie\Permission\PermissionServiceProvider&amp;quot;

</pre>
<p>Chạy lệnh <code>php artisan migrate</code> và chúng ta sẽ có các bảng như <strong>roles, permissions, role_has_permissions, model_has_roles </strong>và <strong>model_has_permission</strong></p>
<p>&nbsp;</p>
<p><strong>2.Tạo Roles và Permissions</strong></p>
<p>Tạo file mới  <strong>/database/seeds/PermissionsDemoSeeder.php </strong>và code như ví dụ bên dưới</p>
<pre class="brush: php; title: ; notranslate">

use Illuminate\Database\Seeder;
use Spatie\Permission\Models\Permission;
use Spatie\Permission\Models\Role;
use Spatie\Permission\PermissionRegistrar;

class PermissionsDemoSeeder extends Seeder
{
/**
* Create the initial roles and permissions.
*
* @return void
*/
public function run()
{
// Reset cached roles and permissions
app()&#x5B;PermissionRegistrar::class]-&amp;gt;forgetCachedPermissions();

// create permissions
Permission::create(&#x5B;'name' =&amp;gt; 'edit articles']);
Permission::create(&#x5B;'name' =&amp;gt; 'delete articles']);
Permission::create(&#x5B;'name' =&amp;gt;; 'publish articles']);
Permission::create(&#x5B;'name' =&amp;gt; 'unpublish articles']);

// create roles and assign existing permissions
$role1 = Role::create(&#x5B;'name' &amp;gt; 'writer']);
$role1-&amp;gt;givePermissionTo('edit articles');
$role1-&amp;gt;givePermissionTo('delete articles');

$role2 = Role::create(&#x5B;'name' =&amp;gt; 'admin']);
$role2-&amp;gt;givePermissionTo('publish articles');
$role2-&amp;gt;givePermissionTo('unpublish articles');

$role3 = Role::create(&#x5B;'name' =&amp;gt; 'super-admin']);
// gets all permissions via Gate::before rule; see AuthServiceProvider

// create demo users
$user = Factory(App\User::class)-&amp;gt;create(&#x5B;
'name' =&amp;gt; 'Example User',
'email' =&amp;gt; 'test@example.com',
]);
$user-&amp;gt;assignRole($role1);

$user = Factory(App\User::class)-&amp;gt;create(&#x5B;
'name' =&amp;gt; 'Example Admin User',
'email' =&amp;gt; 'admin@example.com',
]);
$user-&amp;gt;assignRole($role2);

$user = Factory(App\User::class)-&amp;gt;create(&#x5B;
'name' =&amp;gt; 'Example Super-Admin User',
'email' =&amp;gt; 'superadmin@example.com',
]);
$user-&amp;gt;assignRole($role3);
}
}

</pre>
<p>Tiếp theo khỏi tạo cơ sở dữ liệu</p>
<pre class="brush: php; title: ; notranslate">

php artisan db:seed --class=PermissionsDemoSeeder

</pre>
<p><strong>3.Trao quyền trực tiếp cho một user</strong><br />
Bạn có thể giao một quyền cho một user như sau:</p>
<pre class="brush: php; title: ; notranslate">
$user-&amp;gt;givePermissionTo('edit articles'); // giao quyền edit articles cho một user nào đó

// nhiều quyền cùng lúc
$user-&amp;gt;givePermissionTo('edit articles', 'delete articles');

// dán 1 mảng 
$user-&amp;gt;givePermissionTo(&#x5B;'edit articles', 'delete articles']);

// xóa 1 quyền
$user-&amp;gt;revokePermissionTo('edit articles');

// thêm quyền
$user-&amp;gt;syncPermissions(&#x5B;'edit articles', 'delete articles']);

//Kiểm tra quyền
$user-&amp;gt;hasPermissionTo('edit articles');
</pre>
<p><strong>4.Trao quyền thông qua roles<br />
</strong>Một roles có thể được trao cho bất cứ <code>users</code> nào bằng cách :</p>
<pre class="brush: php; title: ; notranslate">
$user-&amp;gt;assignRole('writer');

// set nhiều vai trò $user-&amp;gt;assignRole('writer', 'admin'); 
// dán 1 mảng $user-&amp;gt;assignRole(&#x5B;'writer', 'admin']);
// xóa vai trò
$user-&amp;gt;removeRole('writer');
//check xem vai tro đang cần tìm bằng cách :
$user-&amp;gt;hasRole('writer');
// thêm vai trò và clear các vai trò có sẳn từ trước
$user-&amp;gt;syncRoles('admin');
</pre>
<p><strong>5.Sử dụng với middleware</strong><br />
Bạn có thể sử dụng can như một mặc định để giới hạn quyền truy cập cho trang web bằng cách :</p>
<pre class="brush: php; title: ; notranslate">
Route::group(&#x5B;'middleware' =&amp;gt; &#x5B;'can:publish articles']], function () { // });
</pre>
<p>Hoặc nếu bạn không muốn sử dụng mặc định, Laravel permission mang đến cho chúng ta các middleware RoleMiddleware, PermissionMiddleware and RoleOrPermissionMiddleware. Để sử dụng, bạn cần thêm vào app/Http/Kernel.php file như sau:</p>
<pre class="brush: php; title: ; notranslate">
protected $routeMiddleware = &#x5B; 
// ... 
'role' =&amp;gt; \Spatie\Permission\Middlewares\RoleMiddleware::class, 
'permission' =&amp;gt; \Spatie\Permission\Middlewares\PermissionMiddleware::class, 
'role_or_permission' =&amp;gt; \Spatie\Permission\Middlewares\RoleOrPermissionMiddleware::class, 
];
</pre>
<p>Sau đó chúng ta có thể sữ dung các route:</p>
<pre class="brush: php; title: ; notranslate">
// Chỉ có role là super-admin mới có thể truy cập vào các route của group này 
Route::group(&#x5B;'middleware' =&amp;gt; &#x5B;'role:super-admin']], function () { // }); 
// Chỉ có permission là publish articles thì mới có thể truy cập vào các route của group này 
Route::group(&#x5B;'middleware' =&amp;gt; &#x5B;'permission:publish articles']], function () { // }); 
// Chỉ có role là super-admin hoặc permission là publish articles thì mới có thể truy cập vào các route của group này 
Route::group(&#x5B;'middleware' =&amp;gt; &#x5B;'role:super-admin','permission:publish articles']], function () { // }); 
Route::group(&#x5B;'middleware' =&amp;gt; &#x5B;'role_or_permission:super-admin|edit articles']], function () { // });

// Đối với GET;
Route::get('/admin', function(){
    return view('admin.dashboard');
})-&amp;gt;name('admin')-&amp;gt;middleware('auth')-&amp;gt;middleware(&#x5B;'role:administrator']);
// auth để kiềm tra đăng nhập và role để kiểm tra vai trò. 
// Tất cả những quyền không được phép truy cập sẽ mặc định trả về page 403: 
</pre>
<p><strong>6.Sử dụng trực tiếp trên Blade</strong><br />
Đối với phần view, để hiển thị view tương ứng cho các vai trò, chúng ta có thể sử dụng <code>@can</code>, <code>@cannot</code>, <code>@canany</code>, and <code>@guest</code> để kiểm tra việc xem thông tin hiển thị trên một trang web. Chúng ta làm như sau:</p>
<pre class="brush: php; title: ; notranslate">
@can('edit articles') 
// 
@endcan

// hoặc

@if(auth()-&amp;gt;user()-&amp;gt;can('edit articles') &amp;amp;&amp;amp; $some_other_condition)
  //
@endif

// hoặc
@role('writer')
    I am a writer!
@else
    I am not a writer...
@endrole

 // Kiem tra nhiều hơn như sau:
@hasanyrole($collectionOfRoles)
    Tôi có một hoặc nhiều roles trong điều kiện này
@else
   Tôi không thuộc roles nào ở trên
@endhasanyrole

// hoặc

@hasanyrole('writer|admin')
    Tôi là một writer hoặc admin hoặc cả hai :D
@else
   Tôi không là writer cũng không là admin
@endhasanyrole
</pre>
<p>Vừa rồi mình đã giới thiệu 1 số vấn đề cớ bản trong việc sử dụng package <code>spatie/laravel-permission</code>  trong Laravel để làm tính năng phân quyền. Mong các bạn có thể áp dụng dễ dàng.<br />
Chúc các bạn ngày vui vẻ.</p>
<p>&nbsp;</p>
<p>The post <a href="https://hoangthuc.com/phan-quyen-trong-laravel-voi-laravel-permission/">Phân quyền trong Laravel với Laravel permission</a> appeared first on <a href="https://hoangthuc.com">Hi You, I am Tade</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://hoangthuc.com/phan-quyen-trong-laravel-voi-laravel-permission/feed/</wfw:commentRss>
			<slash:comments>556</slash:comments>
		
		
			</item>
	</channel>
</rss>
