Skip to content
Snippets Groups Projects
Commit 832c10be authored by Mateus Rambo Strey's avatar Mateus Rambo Strey
Browse files

add roles controller

parent b72b6aff
No related branches found
No related tags found
No related merge requests found
class V1::RolesController < ApplicationController
before_action :authenticate_user!, except: [:index, :show]
before_action :set_role, only: [:show, :update, :destroy]
# GET /roles
# GET /roles.json
def index
render json: Role.all
end
# GET /roles/1
# GET /roles/1.json
def show
render json: @role
end
# POST /roles
# POST /roles.json
def create
@role = Role.new(role_params)
if @role.save
render json: @role, status: :created
else
render json: @role.errors, status: :unprocessable_entity
end
end
# PATCH/PUT /roles/1
# PATCH/PUT /roles/1.json
def update
if @role.update(role_params)
render json: @role, status: :ok
else
render json: @role.errors, status: :unprocessable_entity
end
end
# DELETE /roles/1
# DELETE /roles/1.json
def destroy
@role.destroy
render nothing: true, status: :ok
end
private
# Use callbacks to share common setup or constraints between actions.
def set_role
@role = Role.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def role_params
params.require(:role).permit(:name, :description)
end
end
...@@ -23,7 +23,11 @@ class Role < ActiveRecord::Base ...@@ -23,7 +23,11 @@ class Role < ActiveRecord::Base
self.find_by_name('teacher') || self.create!(name: 'teacher') self.find_by_name('teacher') || self.create!(name: 'teacher')
end end
def self.curator def self.student
self.find_by_name('student') || self.create!(name: 'student') self.find_by_name('student') || self.create!(name: 'student')
end end
def self.curator
self.find_by_name('curator') || self.create!(name: 'curator')
end
end end
class RolePolicy < ApplicationPolicy
def index?
record
end
def show?
record
end
def create?
record if user.is_admin?
end
def update?
record if user.is_admin?
end
def destroy?
record if user.is_admin?
end
end
class RoleSerializer < ActiveModel::Serializer
attributes :id, :name, :description
end
...@@ -60,6 +60,7 @@ Rails.application.routes.draw do ...@@ -60,6 +60,7 @@ Rails.application.routes.draw do
resources :mime_types, except: [:new, :edit] resources :mime_types, except: [:new, :edit]
resources :languages, except: [:new, :edit] resources :languages, except: [:new, :edit]
resources :complaints, only: [:index, :create] resources :complaints, only: [:index, :create]
resources :roles, except: [:new, :edit]
post '/package', to: 'packages#link' post '/package', to: 'packages#link'
end end
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
# cities = City.create([{ name: 'Chicago' }, { name: 'Copenhagen' }]) # cities = City.create([{ name: 'Chicago' }, { name: 'Copenhagen' }])
# Mayor.create(name: 'Emanuel', city: cities.first) # Mayor.create(name: 'Emanuel', city: cities.first)
Role.create(name: 'teacher', description: 'This role represents a Teacher in Portal MEC.') Role.create(name: 'teacher', description: 'This role represents a Teacher in Portal MEC.')
Role.create(name: 'student', description: 'This role represents a Student in Portal MEC.')
Role.create(name: 'admin', description: 'This role represents an MEC Admin, that can perform any action.') Role.create(name: 'admin', description: 'This role represents an MEC Admin, that can perform any action.')
Role.create(name: 'curator', description: 'This role represents a content Curator in Portal MEC.') Role.create(name: 'curator', description: 'This role represents a content Curator in Portal MEC.')
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment