Add customizable user roles (#18641)
* Add customizable user roles * Various fixes and improvements * Add migration for old settings and fix tootctl role management
This commit is contained in:
		
							parent
							
								
									1b4054256f
								
							
						
					
					
						commit
						44b2ee3485
					
				
					 187 changed files with 1945 additions and 1032 deletions
				
			
		|  | @ -0,0 +1,41 @@ | |||
| # frozen_string_literal: true | ||||
| 
 | ||||
| class MigrateSettingsToUserRoles < ActiveRecord::Migration[6.1] | ||||
|   disable_ddl_transaction! | ||||
| 
 | ||||
|   class UserRole < ApplicationRecord; end | ||||
| 
 | ||||
|   def up | ||||
|     owner_role     = UserRole.find_by(name: 'Owner') | ||||
|     admin_role     = UserRole.find_by(name: 'Admin') | ||||
|     moderator_role = UserRole.find_by(name: 'Moderator') | ||||
|     everyone_role  = UserRole.find_by(id: -99) | ||||
| 
 | ||||
|     min_invite_role  = Setting.min_invite_role | ||||
|     show_staff_badge = Setting.show_staff_badge | ||||
| 
 | ||||
|     if everyone_role | ||||
|       everyone_role.permissions &= ~::UserRole::FLAGS[:invite_users] unless min_invite_role == 'user' | ||||
|       everyone_role.save | ||||
|     end | ||||
| 
 | ||||
|     if owner_role | ||||
|       owner_role.highlighted = show_staff_badge | ||||
|       owner_role.save | ||||
|     end | ||||
| 
 | ||||
|     if admin_role | ||||
|       admin_role.permissions |= ::UserRole::FLAGS[:invite_users] if %w(admin moderator).include?(min_invite_role) | ||||
|       admin_role.highlighted  = show_staff_badge | ||||
|       admin_role.save | ||||
|     end | ||||
| 
 | ||||
|     if moderator_role | ||||
|       moderator_role.permissions |= ::UserRole::FLAGS[:invite_users] if %w(moderator).include?(min_invite_role) | ||||
|       moderator_role.highlighted  = show_staff_badge | ||||
|       moderator_role.save | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def down; end | ||||
| end | ||||
		Reference in a new issue