Home

Awesome

<h2 align="center" class='center' style="text-align:center"> TheRole 3.0 </h2> <p align="center" class='center' style="text-align:center"> <b>Authorization gem for Ruby on Rails</b> <i>with <a href="https://github.com/TheRole/TheRoleManagementPanelBootstrap3">Management Panel</a></i> </p> <p align="center" class='center' style="text-align:center"> <img src="https://raw.githubusercontent.com/TheRole/docs/master/images/the_role.png" alt="TheRole. Authorization gem for Ruby on Rails with Administrative interface"> </p> <p align="center" class='center' style="text-align:center"> <b>Semantic. Flexible. Lightweight</b> </p> <div align="center" class='center' style="text-align:center"> TheRole: <a href="http://badge.fury.io/rb/the_role"><img src="https://badge.fury.io/rb/the_role.svg" alt="Gem Version" height="18"></a> API: <a href="http://badge.fury.io/rb/the_role_api"><img src="https://badge.fury.io/rb/the_role_api.svg" alt="Gem Version" height="18"></a> GUI: <a href="http://badge.fury.io/rb/the_role_management_panel"><img src="https://badge.fury.io/rb/the_role_management_panel.svg" alt="Gem Version" height="18"></a> CI: <a href="https://travis-ci.org/TheRole/DummyApp"><img src="https://travis-ci.org/TheRole/DummyApp.svg?branch=master" alt="Build Status" height="18"></a> &nbsp;<a href="https://www.ruby-toolbox.com/categories/rails_authorization">ruby-toolbox</a> </div> <hr> <p align="center" class='center' style="text-align:center"> Strongly recommended <a href='https://github.com/TheRole/docs/blob/master/MigrationsFromV2.md'>to upgrade from TheRole2 to TheRole3</a>. Please, do it ASAP. </p> <hr>

INTRO

TheRole is an authorization library for Ruby on Rails which restricts what resources a given user is allowed to access. All permissions are defined in with 2-level-hash, and stored in the database as a JSON string.

<p align="center" class='center' style="text-align:center"> <img src="https://raw.githubusercontent.com/TheRole/docs/master/images/hash2string.png" alt="TheRole. Authorization gem for Ruby on Rails with Administrative interface"> </p>

Using hashes, makes role system extremely easy to configure and use

Management Panel

<table> <tr> <td> <b>http://localhost:3000/admin/roles</b> </td> </tr> <tr> <td> <img src="https://raw.githubusercontent.com/TheRole/docs/master/images/gui.png?2" alt="TheRole GUI"> </td> </tr> </table>

Import/Export operations provided via TheRole Management Panel. If you have 2 Rails apps, based on TheRole - you can move roles between them via export/import abilities of TheRole Management Panel. It can be usefull for Rails apps based on one engine.

<div align="center" class='center' style="text-align:center"> <img src="https://raw.githubusercontent.com/TheRole/docs/master/images/import_export.png" alt="TheRole. Authorization gem for Ruby on Rails with Administrative interface"> </div>

Limitations by Design

TheRole uses few conventions over configuration. It gives simplicity of code, but also some limitations. You have to know about them before using of TheRole: <a href="https://github.com/TheRole/docs/blob/master/Limitations.md">Limitations list</a>

<hr> <div align="center" class='center' style="text-align:center"> <a href="https://github.com/TheRole/docs/blob/master/TheRoleInstallation.md"> <img src="https://raw.githubusercontent.com/TheRole/docs/master/images/install.png?2" alt="TheRole. Installation"> </a> </div> <div align="center" class='center' style="text-align:center"> <a href="https://github.com/TheRole/docs/blob/master/TheRoleAPI.md"> <img src="https://raw.githubusercontent.com/TheRole/docs/master/images/api.png" alt="TheRole API"> </a> </div> <div align="center" class='center' style="text-align:center"> <a href="https://github.com/TheRole/docs/blob/master/IntegrationWithRailsControllers.md"> <img src="https://raw.githubusercontent.com/TheRole/docs/master/images/int_ctrl.png" alt="Integration with Rails controllers"> </a> </div> <div align="center" class='center' style="text-align:center"> <a href="https://github.com/TheRole/docs/blob/master/IntegrationWithRailsViews.md"> <img src="https://raw.githubusercontent.com/TheRole/docs/master/images/int_views.png" alt="Integration with Rails views"> </a> </div> <div align="center" class='center' style="text-align:center"> <a href="https://github.com/TheRole/docs/blob/master/UsingWithStrongParameters.md"> <img src="https://raw.githubusercontent.com/TheRole/docs/master/images/int_params.png" alt="Using with Strong Parameters"> </a> </div> <div align="center" class='center' style="text-align:center"> <a href="https://github.com/TheRole/docs/blob/master/TheRoleGuiInstallation.md"> <img src="https://raw.githubusercontent.com/TheRole/docs/master/images/install_gui.png" alt="TheRole GUI. Installation"> </a> </div> <hr>

FAQ

<div align="center" class='center' style="text-align:center"> <table> <tr> <td> <table> <tr> <td width="350px" valign="top" style='vertical-align:top'> <p align="left" class="left" style="text-align:left"><a href='https://github.com/TheRole/docs/blob/master/FAQ.md#why-therole-was-created'>Why TheRole was created?</a></p> <p align="left" class="left" style="text-align:left"><a href='https://github.com/TheRole/docs/blob/master/FAQ.md#who-is-administrator'>Who is Administrator?</a></p> <p align="left" class="left" style="text-align:left"><a href='https://github.com/TheRole/docs/blob/master/FAQ.md#who-is-moderator'>Who is Moderator?</a></p> <p align="left" class="left" style="text-align:left"><a href='https://github.com/TheRole/docs/blob/master/FAQ.md#who-is-owner'>Who is Owner?</a></p> <p align="left" class="left" style="text-align:left"><a href='https://github.com/TheRole/docs/blob/master/Ownership.md'>Few words about Ownership</a></p> <p align="left" class="left" style="text-align:left"><a href='https://github.com/TheRole/docs/blob/master/Customization.md'>Customization, Rake tasks, code generators</a></p> </td> </tr> </table> </td> <td> <table> <tr> <td width="350px" valign="top" style='vertical-align:top'> <p align="left" class="left" style="text-align:left"><a href='https://github.com/TheRole/docs/blob/master/FAQ.md##what-does-it-mean-semantic'>What does it mean semantic?</a></p> <p align="left" class="left" style="text-align:left"><a href='https://github.com/TheRole/docs/blob/master/FAQ.md#virtual-sections-and-rules'>Virtual sections and rules</a></p> <p align="left" class="left" style="text-align:left"><a href='https://github.com/TheRole/docs/blob/master/Limitations.md'>Limitations</a></p> <p align="left" class="left" style="text-align:left"><a href='https://github.com/TheRole/docs/blob/master/Contributing.md'>Contributing</a></p> <p align="left" class="left" style="text-align:left"><a href='https://github.com/TheRole/docs/blob/master/MigrationsFromV2.md'>Migration form TheRole 2 to TheRole 3</a></p> <p align="left" class="left" style="text-align:left"><a href='https://github.com/TheRole/docs/blob/master/forPostgresSQLusers.md'>PSQL: how to use native :json column?</a></p> </td> </tr> </table> </td> </tr> </table> </div> <hr>

We need your feedback!

If you have to say something about TheRole, or if you need help, there are few ways to contact us:

  1. SKYPE: ilya.killich
  2. Email: zykin-ilya@ya.ru
  3. TWITTER: @iam_teacher
  4. Hash tag: #the_role
  5. Google group: about the_role
<hr>

Test matrix

totally: 48 environments

<hr>

Supported locales: the_role_api | the_role_management_panel (please, help us with them)

<hr>

MIT License

MIT License Copyright (c) 2012-2015 Ilya N.Zykin

Maintainers

@the-teacher, @sedx, @seuros

Contributors

@igmarin @doabit @linjunpop @egb3 @klacointe @niltonvasques

Thanks for contributors