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

add routes to user's learning_objects, collections and liked learning_objects

parent 4fc24fe5
No related branches found
No related tags found
No related merge requests found
......@@ -4,8 +4,9 @@ class V1::UsersController < ApplicationController
include ::Paginator
before_action :set_user, only: [:show, :update, :destroy, :following]
before_action :authenticate_user!, only: [:create, :update, :destroy, :following]
before_action :set_user, only: [:show, :update, :destroy, :following, :learning_objects, :collections, :liked]
before_action :authenticate_user!, only: [:create, :update, :destroy, :following, :learning_objects, :collections, :liked]
before_action :authorize_user, only: [:learning_objects, :collections, :liked]
# GET /v1/users
# GET /v1/users.json
......@@ -62,6 +63,22 @@ class V1::UsersController < ApplicationController
render json: w, root: 'follows', status: :ok
end
def learning_objects
render json: LearningObject.where(publisher: @user)
end
def collections
render json: Collection.where(owner: @user)
end
def liked
# TODO: if it turns to be a bottleneck, write your pretty SQL :)
includes = [:taggings, :tags, :subject_relations, :subjects, :stage_relations, :educational_stages, :publisher, :language, :license]
render json: LearningObject.includes(includes).find(
Like.where(user: @user, likeable_type: 'LearningObject').pluck(:likeable_id)
)
end
private
def deleted_resource
......@@ -72,6 +89,10 @@ class V1::UsersController < ApplicationController
set_user
end
def authorize_user
authorize @user
end
def set_user
@user = User.find(params[:id])
end
......
......@@ -9,4 +9,19 @@ class UserPolicy < ApplicationPolicy
record if user_exists?
end
def learning_objects?
record if same_user? || user.is_admin?
end
def collections?
record if same_user? || user.is_admin?
end
def liked?
record if same_user? || user.is_admin?
end
def same_user?
record == user
end
end
......@@ -68,6 +68,9 @@ Rails.application.routes.draw do
resources :bookmarks, module: 'users', only: [:index, :create, :destroy]
get 'following/:object_type', to: 'users#following'
get 'activities', to: 'activities#user_activities'
get 'learning_objects', to: 'users#learning_objects'
get 'collections', to: 'users#collections'
get 'liked', to: 'users#liked'
end
end
......
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