diff --git a/app/assets/stylesheets/application/learning_objects.scss b/app/assets/stylesheets/application/learning_objects.scss
index 688c9a085ea688e08622af7b3925fc6484151656..ce5fc3173fc5b2c93e48141ed62d9d58ea2801af 100644
--- a/app/assets/stylesheets/application/learning_objects.scss
+++ b/app/assets/stylesheets/application/learning_objects.scss
@@ -24,6 +24,13 @@ $checked_icon: 'icons/checked.png';
       padding: 2px;
     }
 
+    .learning-object-icon-suspended {
+      color: red;
+      top: calc(50% - 41px) ;
+      left: calc(50% - 31px) ;
+      position: absolute;
+    }
+
     .learning-object-actions {
       position: absolute;
       bottom: 10px;
diff --git a/app/controllers/learning_objects_controller.rb b/app/controllers/learning_objects_controller.rb
index 923ea7fb1bf39f08b33be7d05a5551bccc2a0c56..54bb27e7990fcc02bddf07bfd8709350186baacd 100644
--- a/app/controllers/learning_objects_controller.rb
+++ b/app/controllers/learning_objects_controller.rb
@@ -2,16 +2,21 @@ require 'uri'
 
 class LearningObjectsController < ApplicationController
   include Reportable
+  include Pundit
+
+  rescue_from Pundit::NotAuthorizedError, with: :user_not_authorized
 
   before_action :authenticate_user!, except: [:index, :show]
   before_action :set_learning_object, only: [:show, :edit, :update,
                                              :destroy, :like, :bookmarks,
-                                             :collections, :upload, :upload_link, :download]
+                                             :collections, :upload, :upload_link, :download,
+                                             :user_not_authorized]
   after_action :increment_learning_object_views, only: [:show]
 
   # GET /learning_objects/1
   # GET /learning_objects/1.json
   def show
+    authorize @learning_object
     @liked = !@learning_object.liked?(current_user) if user_signed_in?
     @reviews = Review.where(reviewable: @learning_object)
   end
@@ -74,7 +79,7 @@ class LearningObjectsController < ApplicationController
   def like
     if @learning_object.liked? current_user
       @learning_object.dislike current_user
-      elseg
+    else
       @learning_object.like current_user
     end
 
@@ -128,4 +133,13 @@ class LearningObjectsController < ApplicationController
       redirect_to upload_learning_object_path(id: id), notice: 'Seu objeto foi criado! Para que ele seja publicado é necessário enviar o arquivo.'
     end
   end
+
+  private
+
+  def user_not_authorized
+    flash[:notice] = "Este objeto está suspenso!"
+    flash[:alert] = "Razões: #{Complaint.where(complaintable_id: @learning_object.id).map(&:reason).join(',').to_s}"
+    redirect_to (root_path)
+  end
+
 end
diff --git a/app/controllers/management/complaints_controller.rb b/app/controllers/management/complaints_controller.rb
index 25f54e9b58a37b721136fe292e49336487c85223..4659bdf7068968cd286ea4802ef9e7e4ae1e77a2 100644
--- a/app/controllers/management/complaints_controller.rb
+++ b/app/controllers/management/complaints_controller.rb
@@ -27,13 +27,21 @@ class Management::ComplaintsController < ManagementController
   end
 
   def suspend_object
-    @learning_object = LearningObject.find (params[:object_id])
+    @learning_object = LearningObject.find params[:object_id]
     @learning_object.update(state: 'suspended')
 
     respond_to do |format|
       format.html { redirect_to :back, notice: 'Objeto suspenso com sucesso.' }
     end
+  end
+
+  def publish_object
+    @learning_object = LearningObject.find params[:object_id]
+    @learning_object.update(state: 'published')
 
+    respond_to do |format|
+      format.html { redirect_to :back, notice: 'Objeto publicado com sucesso.' }
+    end
   end
 
   def destroy
diff --git a/app/controllers/management/learning_objects_controller.rb b/app/controllers/management/learning_objects_controller.rb
new file mode 100644
index 0000000000000000000000000000000000000000..da061b6624efbe437a78dd006aaa31859da29a19
--- /dev/null
+++ b/app/controllers/management/learning_objects_controller.rb
@@ -0,0 +1,8 @@
+class Management::LearningObjectsController < ManagementController
+
+
+  def index
+    @learning_objects = LearningObject.includes(:object_type).where(state: 'suspended')
+  end
+
+end
diff --git a/app/controllers/search_controller.rb b/app/controllers/search_controller.rb
index 14657b512f9c9d294ea13996ec1d272f94c43e80..e05c08a68b05485fdfae7fe50ad8228124874f52 100644
--- a/app/controllers/search_controller.rb
+++ b/app/controllers/search_controller.rb
@@ -1,6 +1,7 @@
 class SearchController < ApplicationController
 
   include LearningObjectsHelper
+  include Pundit
 
   def index
     @types = ObjectType.all.map(&:name)
@@ -13,6 +14,7 @@ class SearchController < ApplicationController
   end
 
   def fetch
+
     params[:query] = "*" if params[:query].blank?
 
     case params[:search_class]
@@ -43,7 +45,7 @@ class SearchController < ApplicationController
     when "User"
       params_hash = { fields: ['name'] }
       get_thumbnail = Proc.new { |obj| image_tag(obj.avatar.url(:thumb), 32) }
-    else 
+    else
       raise "Wrong search class parameter"
     end
     render json: autocomplete_search(Object.const_get(params[:search_class]), params_hash, get_thumbnail)
@@ -53,8 +55,8 @@ class SearchController < ApplicationController
 
   def autocomplete_search(search_class, params_hash={}, get_thumbnail)
     response = []
-    search_params = { limit: 10, misspellings: { below: 5 } }
-    objs = search_class.search(params[:query],search_params.merge(params_hash))
+    search_params = { limit: 10, misspellings: { below: 5 }, where: {state: validate_object} }
+    objs = search_class.search(params[:query], search_params.merge(params_hash))
     objs.each do |obj|
       hash = {}
       hash["name"] = obj.name
@@ -80,6 +82,7 @@ class SearchController < ApplicationController
     hash[:topics_name] = topics.split(', ') unless topics.nil?
     hash[:object_type] = params[:type].split(', ') unless params[:type].blank?
     hash[:publisher] = params[:source].split("-s- ") unless params[:source].blank?
+    hash[:state] = validate_object
     # year = params[:year].blank? ? nil : params[:year].split('-').take(2)
 
     hash.blank? ? nil : hash
@@ -120,4 +123,11 @@ class SearchController < ApplicationController
     { name: {order: :asc, unmapped_type: :string} }
   end
 
+  private
+
+  def validate_object
+    return 'published' if current_user.nil? || !current_user.is_admin?
+    return ['published', 'suspended', 'draft']
+  end
+
 end
diff --git a/app/controllers/welcome_controller.rb b/app/controllers/welcome_controller.rb
index a3cadaaa7b851c19dde512e557cb4fefcf4abc35..001bf77582f308194c6736e5ccfdc64d71018d45 100644
--- a/app/controllers/welcome_controller.rb
+++ b/app/controllers/welcome_controller.rb
@@ -1,9 +1,9 @@
 class WelcomeController < ApplicationController
+  include Pundit
 
   def index
     @carousel = Carousel.all || []
-
-      @highlights = LearningObject.limit(8)
+    @highlights = policy_scope(LearningObject).limit(8)
   end
 
   def faq
diff --git a/app/models/learning_object.rb b/app/models/learning_object.rb
index dba093fe9e114a7dc3c5b009385ddd44a2133671..56b649336b9314fa1f8486b26a256d59e1b53b37 100644
--- a/app/models/learning_object.rb
+++ b/app/models/learning_object.rb
@@ -36,8 +36,9 @@ class LearningObject < ActiveRecord::Base
         object_type: type,
         score: score,
         published_at: published_at,
+        topics_name: topics.map(&:name),
         source: source,
-        topics_name: topics.map(&:name)
+        state: state
     }
   end
 
@@ -57,8 +58,8 @@ class LearningObject < ActiveRecord::Base
     get_metadata_value_of 'dc.object.url'
   end
 
-  ##checks if learning object link to an url.
-  #returns boolean
+  ## checks if learning object link to an url.
+  # returns boolean
   def has_url_reference?
     !url_reference.blank?
   end
diff --git a/app/policies/application_policy.rb b/app/policies/application_policy.rb
new file mode 100644
index 0000000000000000000000000000000000000000..2a0bbc5213576eb96894310c120ea00520aab607
--- /dev/null
+++ b/app/policies/application_policy.rb
@@ -0,0 +1,53 @@
+class ApplicationPolicy
+  attr_reader :user, :record
+
+  def initialize(user, record)
+    @user = user
+    @record = record
+  end
+
+  def index?
+    false
+  end
+
+  def show?
+    scope.where(:id => record.id).exists?
+  end
+
+  def create?
+    false
+  end
+
+  def new?
+    create?
+  end
+
+  def update?
+    false
+  end
+
+  def edit?
+    update?
+  end
+
+  def destroy?
+    false
+  end
+
+  def scope
+    Pundit.policy_scope!(user, record.class)
+  end
+
+  class Scope
+    attr_reader :user, :scope
+
+    def initialize(user, scope)
+      @user = user
+      @scope = scope
+    end
+
+    def resolve
+      scope
+    end
+  end
+end
diff --git a/app/policies/learning_object_policy.rb b/app/policies/learning_object_policy.rb
new file mode 100644
index 0000000000000000000000000000000000000000..f5829e1d918af8a1f64728e5d0c87c9ba920a450
--- /dev/null
+++ b/app/policies/learning_object_policy.rb
@@ -0,0 +1,23 @@
+class LearningObjectPolicy < ApplicationPolicy
+  class Scope < Scope
+    def resolve
+      if user.nil?
+        scope.where(state: 'published')
+      elsif user.is_admin?
+        scope.all
+      else
+        scope.where(state: 'published')
+      end
+    end
+  end
+
+  def show?
+    if user.nil?
+      record.state == 'published'
+    elsif user.is_admin?
+      record
+    else
+      record.state == 'published'
+    end
+  end
+end
diff --git a/app/policies/search_policy.rb b/app/policies/search_policy.rb
new file mode 100644
index 0000000000000000000000000000000000000000..441469b63a9139414365770650ffca9a7c959fcf
--- /dev/null
+++ b/app/policies/search_policy.rb
@@ -0,0 +1,13 @@
+class SearchPolicy < ApplicationPolicy
+  class Scope < Scope
+    def resolve
+      if user.nil?
+        scope.where(state: 'published')
+      elsif user.is_admin?
+        scope.all
+      else
+        scope.where(state: 'published')
+      end
+    end
+  end
+end
diff --git a/app/policies/welcome_policy.rb b/app/policies/welcome_policy.rb
new file mode 100644
index 0000000000000000000000000000000000000000..5d5ae66c95e757dbb5bf6b88f8dbd8c09710abbd
--- /dev/null
+++ b/app/policies/welcome_policy.rb
@@ -0,0 +1,11 @@
+class WelcomePolicy < ApplicationPolicy
+  class Scope < Scope
+    def resolve
+      if user.is_admin?
+        scope.all
+      else
+        scope.where(state: 'published')
+      end
+    end
+  end
+end
diff --git a/app/views/learning_objects/_learning_object_horizontal.erb b/app/views/learning_objects/_learning_object_horizontal.erb
index 134f597c6e652ff6319623ab7c046487f6584773..77865f67d44eac4f3e991d0c14d7b5a237a0de43 100644
--- a/app/views/learning_objects/_learning_object_horizontal.erb
+++ b/app/views/learning_objects/_learning_object_horizontal.erb
@@ -4,9 +4,15 @@
     <!-- <div class="col-md-5"> -->
       <div class="learning-object-thumbnail">
         <%= link_to link do
-          image_tag learning_object_thumbnail(learning_object), alt: learning_object_title(learning_object), class: "thumbnail"
+            image_tag learning_object_thumbnail(learning_object), alt: learning_object_title(learning_object), class: "thumbnail"
         end %>
 
+        <% if learning_object.state == 'suspended' %>
+          <div class="learning-object-icon-suspended">
+            <i class="fa fa-times fa-5x fa-lg" ></i>
+          </div>
+        <% end %>
+
         <% if user_signed_in? %>
             <%= render 'learning_objects/actions_buttons', learning_object: learning_object %>
         <% end %>
diff --git a/app/views/learning_objects/_learning_object_vertical.erb b/app/views/learning_objects/_learning_object_vertical.erb
index 61282aeb66ada3527eb238c766b1bb4a49eb97dd..4b5fdd51d16671de75a66ace74bdb67bf8ce4e73 100644
--- a/app/views/learning_objects/_learning_object_vertical.erb
+++ b/app/views/learning_objects/_learning_object_vertical.erb
@@ -4,6 +4,9 @@
       <%= link_to learning_object_path(id: learning_object.id) do
         image_tag learning_object_thumbnail(learning_object), alt: learning_object_title(learning_object), class: "thumbnail"
       end %>
+      <% if learning_object.state == 'suspended' %>
+        <i class="fa fa-times fa-5x fa-lg learning-object-icon-suspended" ></i>
+      <% end %>
       <% if user_signed_in? %>
           <%= render 'learning_objects/actions_buttons', learning_object: learning_object %>
       <% end %>
diff --git a/app/views/learning_objects/show.html.erb b/app/views/learning_objects/show.html.erb
index 5db4c16d007042160794937093bc4c123c60d113..250a7ec4d106f8cd16cb983f523c16368a94e34e 100644
--- a/app/views/learning_objects/show.html.erb
+++ b/app/views/learning_objects/show.html.erb
@@ -1,4 +1,9 @@
 <% content_for(:body_attributes) do %>data-no-turbolink="true"<% end %>
+
+<% if @learning_object.state == 'suspended' %>
+  <h2> Este conteúdo está suspenso! </h2>
+<% end %>
+
 <div class="row learning-object">
   <div class="col-md-7">
     <div class="view">
@@ -10,7 +15,7 @@
 
     </div>
     <br/><br/>
-    <h2 class="title"><%= @learning_object.name %></h2>
+    <h2 class="title"><%= learning_object_title(@learning_object) %></h2>
     <% unless @learning_object.description.nil? %>
       <p class="description"><%= @learning_object.description %></p>
     <% end %>
diff --git a/app/views/management/complaints/index.html.erb b/app/views/management/complaints/index.html.erb
index a2d9d0069dfec0d52c350396764acc1d3083aba2..6deb1c4a88d9e3f6f0280ebc50bfdb561a99e80c 100644
--- a/app/views/management/complaints/index.html.erb
+++ b/app/views/management/complaints/index.html.erb
@@ -32,7 +32,7 @@
 <div class="row">
   <div class="col-md-6 col-sm-6"><p>Número de vezes que os usuários marcaram objetos educacionais como spam.</p></div>
   <div class="col-md-6 col-sm-6">
-    <p class="ls-float-right ls-float-none-xs">Período selecionado: <strong><%= @date_limit %></strong></p></div>
+    <p class="ls-float-right ls-float-none-xs">Período selecionado: <strong><%= @date %></strong></p></div>
 </div>
 
 <div class="ls-clearfix"></div>
@@ -103,13 +103,17 @@
                   <a href="#" class="ls-btn-primary" aria-expanded="false" role="combobox">Administrar</a>
                   <ul class="ls-dropdown-nav" aria-hidden="true">
                     <li>
+                    <% if complaint.complaintable.state == "published" %>
                       <%= link_to 'Suspender Objeto', management_complaint_suspend_object_path(complaint_id: complaint.id, object_id: complaint.complaintable_id), {method: :post, data: {confirm: 'Tem certeza que deseja suspender este objeto?'}, title: 'Suspender Objeto', class: 'ls-btn ls-btn-sm', role: 'option'} %>
-                    </li>
-                    <li>
+                    <% else %>
+                      <%= link_to 'Publicar Objeto', management_complaint_publish_object_path(complaint_id: complaint.id, object_id: complaint.complaintable_id), {method: :post, data: {confirm: 'Tem certeza que deseja publicar este objeto?'}, title: 'Suspender Objeto', class: 'ls-btn ls-btn-sm', role: 'option'} %>
+                    <% end %>
+                  </li>
                       <% @complaints.select{ |x| x.complaintable.name == complaint.complaintable.name }.each do |complaint_ignore| %>
-                        <%= link_to 'Ignorar denúncia', management_complaint_path(id: complaint_ignore.id), {method: :delete, data: {confirm: 'Tem certeza que deseja ignorar esta denúncia?'}, title: 'Ignorar denúncia', class: 'ls-btn ls-btn-sm', role: 'option'} %>
+                      <li>
+                        <%= link_to "Ignorar denúncia de #{User.find(complaint_ignore.user_id).name}", management_complaint_path(id: complaint_ignore.id), {method: :delete, data: {confirm: 'Tem certeza que deseja ignorar esta denúncia?'}, title: 'Ignorar denúncia', class: 'ls-btn ls-btn-sm', role: 'option'} %>
+                      </li>
                       <% end %>
-                    </li>
                   </ul>
                 </div>
               </div>
diff --git a/app/views/management/learning_objects/index.html.erb b/app/views/management/learning_objects/index.html.erb
new file mode 100644
index 0000000000000000000000000000000000000000..86aa4a6479ddfd5c1f1ad50d3dc458fc9ad2c354
--- /dev/null
+++ b/app/views/management/learning_objects/index.html.erb
@@ -0,0 +1,34 @@
+<h1 class="ls-title-intro ls-ico-bullhorn">Conteúdos Suspensos</h1>
+
+<div class="ls-clearfix"></div>
+
+<div class="ls-board-box">
+
+  <div id="sending-stats" class="row ls-box-group">
+    <div class="col-sm-12 col-lg-7">
+      <div class="ls-box">
+        <div class="ls-box-head">
+          <h6 class="ls-title-4">Total de conteúdos suspensos</h6>
+        </div>
+        <div class="ls-box-body">
+          <strong class="ls-color-theme"><%= @learning_objects.size %></strong>
+        </div>
+      </div>
+    </div>
+  </div>
+
+  <% @learning_objects.sort{|x,y| x.name <=> y.name}.each do |learning_object| %>
+  <div class="ls-list">
+    <header class="ls-list-header">
+      <div class="ls-list-title col-md-9">
+        <%= link_to "#{learning_object.name}", learning_object_path(id: learning_object.id) %></a>
+        <small><%= learning_object.description %>  </small>
+      </div>
+      <div class="col-md-3 ls-txt-right">
+        <%= link_to 'Publicar Objeto', management_complaint_publish_object_path(complaint_id: Complaint.where(complaintable_id: learning_object.id).first, object_id: learning_object.id), {method: :post, data: {confirm: 'Tem certeza que deseja publicar este objeto?'}, title: 'Suspender Objeto', class: 'ls-btn-primary ls-btn-sm', role: 'option'} %>
+      </div>
+    </header>
+  </div>
+  <% end %>
+
+  </div>
diff --git a/app/views/shared/management/_nav_menu.html.erb b/app/views/shared/management/_nav_menu.html.erb
index 494562c642e3d22ecbdd15f91a72e48d7e861d85..0dbbb0c17f55d809370b6246cdb03250ff32187b 100644
--- a/app/views/shared/management/_nav_menu.html.erb
+++ b/app/views/shared/management/_nav_menu.html.erb
@@ -29,9 +29,9 @@
       <ul role="menu">
         <li><%= link_to "Denúncias", management_complaints_path, class: 'ls-submenu-item' %>
         <li><%= link_to "Razões", management_complaint_reasons_path, class: 'ls-submenu-item' %>
+        <li><%= link_to "Conteúdos suspensos", management_learning_objects_path, class: 'ls-submenu-item' %>
       </ul>
     </li>
-
     <li> <%= link_to "Score", management_scores_path, class: 'ls-ico-bars' %> </li>
     <li> <%= link_to "Voltar ao Portal", root_path, class: 'ls-ico-chevron-left' %> </li>
   </ul>
diff --git a/config/routes.rb b/config/routes.rb
index e26762f7119cb178d425197debb04d8a3597f0f1..6bcac782b0cd390458818e6c2cebaddb6925a20f 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -11,6 +11,7 @@ Rails.application.routes.draw do
     root 'welcome#index'
     resources :complaints do
       post '/suspend_object/:object_id', as: :suspend_object, action: :suspend_object
+      post '/publish_object/:object_id', as: :publish_object, action: :publish_object
     end
     resources :institutions do
       member do
@@ -22,6 +23,7 @@ Rails.application.routes.draw do
     resources :complaint_reasons
     resources :highlights
     resources :carousels
+    resources :learning_objects, only: [:index]
     resources :scores, :score_user_categories, :user_categories
 
     resources :statistics do