Skip to content
Snippets Groups Projects
Commit 9398bb45 authored by Israel Barreto Sant'Anna's avatar Israel Barreto Sant'Anna
Browse files

Merge branch 'master' into dspace-sync

parents 762b705a e5369761
No related branches found
No related tags found
No related merge requests found
......@@ -33,12 +33,13 @@ class V1::ComplaintsController < ApplicationController
# POST v1/complaints
# POST v1/complaints.json
def create
complaint = Complaint.new(complaint_params)
@complaint = Complaint.new(complaint_params)
if complaint.save
render json: complaint, status: :created
if @complaint.save
ComplaintsMailer.new_complaint_received(@complaint, @current_user).deliver_now
render json: @complaint, status: :created
else
render json: complaint.errors, status: :unprocessable_entity
render json: @complaint.errors, status: :unprocessable_entity
end
end
......
......@@ -24,11 +24,11 @@ class V1::UsersController < ApplicationController
include ::PublisherController
include ::SubjectableController
before_action :set_user, only: [:show, :update, :destroy, :following, :own_reviews, :received_reviews, :followers, :approve_request]
before_action :set_user, only: [:show, :update, :destroy, :following, :own_reviews, :received_reviews, :followers, :approve_request, :add_submitter]
before_action :set_new_user, only: [:upload_requests]
before_action :authenticate_user!, only: [:create, :update, :destroy, :following,
:own_reviews, :received_reviews, :followers, :submitter_request, :upload_requests, :approve_request]
before_action :authorize_user, only: [:own_reviews, :received_reviews, :update, :destroy, :upload_requests, :approve_request]
:own_reviews, :received_reviews, :followers, :submitter_request, :upload_requests, :approve_request, :add_submitter]
before_action :authorize_user, only: [:own_reviews, :received_reviews, :update, :destroy, :upload_requests, :approve_request, :add_submitter]
# GET /v1/users
# GET /v1/users.json
......@@ -93,6 +93,27 @@ class V1::UsersController < ApplicationController
render json: users
end
# POST /v1/users/:id/add_submitter
# POST /v1/users/:id/add_submitter.json
def add_submitter
if @user.is_submitter?
render status: :forbidden
elsif !approve_params.to_s.blank?
if approve_params
@user.submitter_request = User.submitter_requests[:accepted]
@user.roles << Role.where(name: "submitter")
@user.save
render status: :ok
else
@user.update(submitter_request: User.submitter_requests[:rejected])
render status: :ok
end
else
render status: :forbidden
end
end
# POST /v1/users/:id/approve_request
# POST /v1/users/:id/approve_request.json
def approve_request
......
# Copyright (C) 2015 Centro de Computacao Cientifica e Software Livre
# Departamento de Informatica - Universidade Federal do Parana
#
# This file is part of portalmec.
#
# portalmec is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# portalmec is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with portalmec. If not, see <http://www.gnu.org/licenses/>.
class ComplaintsMailer < ApplicationMailer
default to: 'integrada.contato@mec.gov.br'
default from: Proc.new { @user.email }
def new_complaint_received(complaint, user)
@complaint = complaint
@user = user
mail(subject: "Denuncia de objeto")
end
end
......@@ -55,6 +55,10 @@ class UserPolicy < ApplicationPolicy
record if user.is_supervisor?
end
def add_submitter?
record if user.is_supervisor?
end
def authorized_user?
return false if ( record.is_admin? && !user.is_admin? )
if ( record.is_editor? )
......
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style>/* Email styles need to be inline */</style>
</head>
<body>
<h2>Nome do usuário: <%= @user.name %></h1>
<h2>Email do usuário: <%= @user.email %></h1>
<h2>Descrição: <%= @complaint.description %></h1>
<h2>Classe denunciada: <%= @complaint.complainable_type %></h1>
<h2>Id: <%= @complaint.complainable_id %></h1>
<h2>Nome: <%= @complaint.complainable.name %></h1>
<h2>Razão: <%= @complaint.complaint_reason.reason %></h1>
</body>
</html>
......@@ -139,6 +139,7 @@ Rails.application.routes.draw do
get 'reviews/own', to: 'users#own_reviews'
get 'reviews/received', to: 'users#received_reviews'
post 'approve_request', to: 'users#approve_request'
post 'add_submitter', to: 'users#add_submitter'
end
collection do
get 'upload_requests'
......
......@@ -372,8 +372,8 @@ resource 'Users' do
let(:raw_post) {params.to_json}
before do
@user = create(:user, )
@user.update(submitter_request: User.submitter_requests[:requested])
@user = create(:user)
@user.update(submitter_request: User.submitter_requests[:requested])
end
example 'Approve a submitter request' do
......@@ -381,4 +381,24 @@ resource 'Users' do
expect(status).to eq(200)
end
end
post '/v1/users/:id/add_submitter' do
include_context "authenticate_user_supervisor"
parameter :id, 'The id of the user who asked to be a submitter'
parameter :approves, 'If the user can be a submitter or not'
let(:id) {@user.id}
let(:approves) { true }
let(:raw_post) {params.to_json}
before do
@user = create(:user)
end
example 'Add an user submitter' do
do_request
expect(status).to eq(200)
end
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