diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css index e0bed561..25df4602 100644 --- a/app/assets/stylesheets/application.css +++ b/app/assets/stylesheets/application.css @@ -2296,7 +2296,7 @@ and it won't be important on password protected instances */ #newmap_co:hover, #newmap_co.selected { background-position: 0 -64px; } -#newmap_pu:hover, #newmap_co.selected { +#newmap_pu:hover, #newmap_pu.selected { background-position: -64px -64px; } #newmap_pr:hover, #newmap_pr.selected { diff --git a/app/controllers/maps_controller.rb b/app/controllers/maps_controller.rb index 8f6da37c..98c79840 100644 --- a/app/controllers/maps_controller.rb +++ b/app/controllers/maps_controller.rb @@ -206,18 +206,26 @@ class MapsController < ApplicationController def destroy @current = current_user - @map = Map.find(params[:id]) + @map = Map.find(params[:id]).authorize_to_delete(@current) - @mappings = @map.mappings + if @map + @mappings = @map.mappings - @mappings.each do |mapping| - mapping.delete + @mappings.each do |mapping| + mapping.delete + end + + @map.delete end - @map.delete - respond_to do |format| - format.html { redirect_to "/maps/mappers/" + @current.id.to_s, notice: "Map deleted." } + format.json { + if @map + render json: "success" + else + render json: "unauthorized" + end + } end end end diff --git a/app/models/map.rb b/app/models/map.rb index 9cc39fe3..fcfefc81 100644 --- a/app/models/map.rb +++ b/app/models/map.rb @@ -86,6 +86,13 @@ class Map < ActiveRecord::Base ##### PERMISSIONS ###### + def authorize_to_delete(user) + if (self.user != user) + return false + end + return self + end + # returns false if user not allowed to 'show' Topic, Synapse, or Map def authorize_to_show(user) if (self.permission == "private" && self.user != user)