コード例 #1
0
ファイル: permissions.php プロジェクト: dasklney/traq
 /**
  * Handles the permissions listing and saving...
  *
  * Nice sexy DRY code right here, eh?
  */
 public function action_index($type)
 {
     // If the type of permissions is 'groups', set it to 'usergroups'.
     $type = $type == 'groups' ? 'usergroup' : 'role';
     // Has the form been submitted?
     if (Request::method() == 'post') {
         $global_defaults = Permission::defaults(0, 0, $type);
         // Loop over group/role and get id and permissions
         foreach (Request::$post['perm'] as $type_id => $permissions) {
             // Loop over permissions for id and value
             foreach ($permissions as $permission_id => $value) {
                 // Fetch permission
                 $perm = Permission::find($permission_id);
                 // Are we dealing with a default?
                 if ($type_id == 0) {
                     // Does it exist?
                     if ($perm->project_id > 0) {
                         // We we need to delete it?
                         if ($global_defaults[$perm->action]->value == $value) {
                             $perm->delete();
                         } elseif ($perm->value != $value) {
                             $perm->set('value', $value);
                             $perm->save();
                         }
                     } else {
                         // Should we create it?
                         if ($perm->value != $value) {
                             // Create the permission
                             $perm = new Permission(array('project_id' => $this->project->id, 'type' => $type, 'type_id' => $type_id, 'action' => $perm->action, 'value' => $value));
                             $perm->save();
                         }
                     }
                 } elseif ($perm and $perm->type_id == $type_id and $value == -1 and $type_id > 0) {
                     $perm->delete();
                 } elseif ($value == 0 or $value == 1) {
                     // Update
                     if ($perm and $perm->type_id == $type_id) {
                         $perm->value = $value;
                         $perm->save();
                     } else {
                         $perm = new Permission(array('project_id' => $this->project->id, 'type' => $type, 'type_id' => $type_id, 'action' => $perm->action, 'value' => $value));
                         $perm->save();
                     }
                 }
             }
         }
         Request::redirect(Request::requestUri());
     }
     // Setup the page
     $this->permissions_for($type);
 }
コード例 #2
0
ファイル: Seeder.php プロジェクト: nirix/traq
 /**
  * Insert permissions.
  */
 public function insertPermissions()
 {
     $permissions = [['project_id' => 0, 'type' => 'usergroup', 'type_id' => 0, 'permissions' => json_decode('{"view":true,"project_settings":false,"delete_timeline_events":false,"view_tickets":true,"create_tickets":true,"update_tickets":true,"delete_tickets":false,"move_tickets":false,"comment_on_tickets":true,"edit_ticket_description":false,"vote_on_tickets":true,"add_attachments":true,"view_attachments":true,"delete_attachments":false,"perform_mass_actions":false,"ticket_properties_set_assigned_to":false,"ticket_properties_set_milestone":true,"ticket_properties_set_version":true,"ticket_properties_set_component":false,"ticket_properties_set_severity":false,"ticket_properties_set_priority":false,"ticket_properties_set_status":false,"ticket_properties_set_tasks":false,"ticket_properties_set_related_tickets":false,"ticket_properties_change_type":false,"ticket_properties_change_assigned_to":false,"ticket_properties_change_milestone":false,"ticket_properties_change_version":false,"ticket_properties_change_component":true,"ticket_properties_change_severity":false,"ticket_properties_change_priority":false,"ticket_properties_change_status":false,"ticket_properties_change_summary":false,"ticket_properties_change_tasks":false,"ticket_properties_change_related_tickets":false,"ticket_properties_complete_tasks":false,"edit_ticket_history":false,"delete_ticket_history":false,"create_wiki_page":false,"edit_wiki_page":false,"delete_wiki_page":false}', true)], ['project_id' => 0, 'type' => 'usergroup', 'type_id' => 3, 'permissions' => json_decode('{"create_tickets":false,"comment_on_tickets":false,"update_tickets":false,"vote_on_tickets":false,"add_attachments":false}', true)], ['project_id' => 0, 'type' => 'role', 'type_id' => 0, 'permissions' => json_decode('{"view":true,"project_settings":false,"delete_timeline_events":false,"view_tickets":true,"create_tickets":true,"update_tickets":true,"delete_tickets":false,"move_tickets":false,"comment_on_tickets":true,"edit_ticket_description":false,"vote_on_tickets":true,"add_attachments":true,"view_attachments":true,"delete_attachments":false,"perform_mass_actions":false,"ticket_properties_set_assigned_to":true,"ticket_properties_set_milestone":true,"ticket_properties_set_version":true,"ticket_properties_set_component":true,"ticket_properties_set_severity":true,"ticket_properties_set_priority":true,"ticket_properties_set_status":true,"ticket_properties_set_tasks":true,"ticket_properties_set_related_tickets":true,"ticket_properties_change_type":true,"ticket_properties_change_assigned_to":true,"ticket_properties_change_milestone":true,"ticket_properties_change_version":true,"ticket_properties_change_component":true,"ticket_properties_change_severity":true,"ticket_properties_change_priority":true,"ticket_properties_change_status":true,"ticket_properties_change_summary":true,"ticket_properties_change_tasks":true,"ticket_properties_change_related_tickets":true,"ticket_properties_complete_tasks":true,"edit_ticket_history":false,"delete_ticket_history":false,"create_wiki_page":false,"edit_wiki_page":false,"delete_wiki_page":false}', true)], ['project_id' => 0, 'type' => 'role', 'type_id' => 1, 'permissions' => json_decode('{"project_settings":true,"delete_timeline_events":true,"delete_tickets":true,"move_tickets":true,"edit_ticket_description":true,"delete_attachments":true,"edit_ticket_history":true,"delete_ticket_history":true,"perform_mass_actions":true,"create_wiki_page":true,"edit_wiki_page":true,"delete_wiki_page":true}', true)]];
     foreach ($permissions as $permission) {
         $perm = new Permission($permission);
         $perm->save();
     }
 }