PHPackages                             shroomok/discord-permission - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Authentication &amp; Authorization](/categories/authentication)
4. /
5. shroomok/discord-permission

AbandonedArchivedLibrary[Authentication &amp; Authorization](/categories/authentication)

shroomok/discord-permission
===========================

Set roles and permissions based on member roles of your Discord server

v1.x-dev(3y ago)0131MITPHPPHP ^8.1

Since Mar 27Pushed 3y ago1 watchersCompare

[ Source](https://github.com/shroomok/discord-permission)[ Packagist](https://packagist.org/packages/shroomok/discord-permission)[ RSS](/packages/shroomok-discord-permission/feed)WikiDiscussions v1 Synced 1mo ago

READMEChangelogDependencies (4)Versions (1)Used By (0)

Discord Permission for Laravel
==============================

[](#discord-permission-for-laravel)

This package automatically grants permissions to Laravel users based on their roles in Discord Guild (Server).

Requirements
------------

[](#requirements)

- PHP &gt;= 8.1
- Laravel &gt;= 9.0
- [spatie/laravel-permissions](https://github.com/spatie/laravel-permission) &gt;= 5.9
- [restcord/restcord](https://github.com/restcord/restcord)

Installation
------------

[](#installation)

```
composer require shroomok/discord-permission
```

### .env

[](#env)

```
DISCORD_GUILD=

```

### Configure mapping between Discord roles and Laravel permissions/roles: config/discord\_permission.php

[](#configure-mapping-between-discord-roles-and-laravel-permissionsroles-configdiscord_permissionphp)

```
php artisan vendor:publish --provider="Shroomok\DiscordPermission\DiscordPermissionServiceProvider" --tag="config"
```

```
'roles_map' => [
        [
            'discord_role' => 'moderator',
            'laravel_roles' => ['moderator', 'editor']
        ],
        [
            'discord_role' => 'donator',
            'laravel_permissions' => ['access premium content']
        ]
    ]
```

### Finally, register DiscordClient dependency in app/Providers/AppServiceProvider.php

[](#finally-register-discordclient-dependency-in-appprovidersappserviceproviderphp)

```
namespace App\Providers;
...
use RestCord\DiscordClient;

class AppServiceProvider extends ServiceProvider
{
      ...

      public function register()
      {
          $this->app->singleton(DiscordClient::class, function(){
              // token definitely better to retrieve from config like: 'token' => config('services.discord.bot_token')
              return new DiscordClient(['token' => 'DISCORD BOT TOKEN']);
          });
      }

      ...
}
```

Queued Event Listener
---------------------

[](#queued-event-listener)

Synchronization with discord happens within `SyncDiscordRoles` listener which is queueable. Don't forget to start worker `php artisan queue:work` if your `QUEUE_CONNECTION` is not `sync`

Usecase
-------

[](#usecase)

For example, you are running web application based on Laravel framework. Also, you have Discord community related to this website. And you've already implemented login via Discord OAuth. Users, who have Discord account, are able to sign in into your web app. Now you want to share with your Community members something special. But with specific users only. Or these users are moderators in your Discord Guild already, and it would be nice to grant them same permissions in Laravel app... At this point DiscordPermission package can make your life easier!

How it works
------------

[](#how-it-works)

It interacts with Discord API to get data about specific guild, members, and their roles via [restcord/restcord](https://github.com/restcord/restcord).

Manipulations with roles and permissions within Laravel app are done via [spatie/laravel-permissions](https://github.com/spatie/laravel-permission)

Main logic consists of `DiscordLoginSuccess event` and `SyncDiscordRoles listener`.

`DiscordLoginSuccess event` should be dispatched when User finished authentication via Discord and application retrieved discord\_id.

`SyncDiscordRoles listener` interacts with Discord API to check the role of passed User and then assign (or not) Laravel roles and/or permissions. It implements `ShouldQueue` interface to make it possible to run it as a worker in background and not not overwhelm user during login.

User object could be any object with `assignRole(string $role)` and `givePermissionTo(string $permission)` methods.

Basically, it must use 'HasRoles' trait from [spatie/laravel-permissions](https://github.com/spatie/laravel-permission) package.

Credits
-------

[](#credits)

Built with love by [Shroomok](https://shroomok.com)

[![Buy Me A Coffee](https://camo.githubusercontent.com/7a2a0c0edd7bee442ecdd904ff5dbe79f528cf4561e63ea6ec6973231c55c92e/68747470733a2f2f63646e2e6275796d6561636f666665652e636f6d2f627574746f6e732f64656661756c742d626c75652e706e67)](https://www.buymeacoffee.com/shroomok)

Peace 🍄

###  Health Score

19

—

LowBetter than 10% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity6

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity37

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

1149d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/1010ded45f15ba4862fcf4fb4eb4eb0db51883fbc485d8d05f24245ec7840c0f?d=identicon)[shroomok](/maintainers/shroomok)

---

Top Contributors

[![shroomok](https://avatars.githubusercontent.com/u/122602402?v=4)](https://github.com/shroomok "shroomok (8 commits)")

---

Tags

discorddiscord-apilaravellaravel-frameworkphp

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/shroomok-discord-permission/health.svg)

```
[![Health](https://phpackages.com/badges/shroomok-discord-permission/health.svg)](https://phpackages.com/packages/shroomok-discord-permission)
```

###  Alternatives

[bezhansalleh/filament-shield

Filament support for `spatie/laravel-permission`.

2.8k2.9M88](/packages/bezhansalleh-filament-shield)[althinect/filament-spatie-roles-permissions

340954.7k9](/packages/althinect-filament-spatie-roles-permissions)[backpack/permissionmanager

Users and permissions management interface for Laravel 5 using Backpack CRUD.

5591.8M16](/packages/backpack-permissionmanager)[vyuldashev/nova-permission

A Laravel Nova tool for Spatie's Permission library.

4332.5M3](/packages/vyuldashev-nova-permission)[kiritokatklian/nova-permission

A Laravel Nova tool for Spatie's Permission library.

791.1M3](/packages/kiritokatklian-nova-permission)[sereny/nova-permissions

Laravel Nova - Roles &amp; Permissions

86388.6k1](/packages/sereny-nova-permissions)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
