Переглянути джерело

Safe attributes for repositories.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9876 e93f8b46-1217-0410-a6f0-8f06a7374b81
tags/2.1.0
Jean-Philippe Lang 12 роки тому
джерело
коміт
585d08765e

+ 3
- 2
app/controllers/repositories_controller.rb Переглянути файл

@@ -47,7 +47,8 @@ class RepositoriesController < ApplicationController

def create
attrs = pickup_extra_info
@repository = Repository.factory(params[:repository_scm], attrs[:attrs])
@repository = Repository.factory(params[:repository_scm])
@repository.safe_attributes = params[:repository]
if attrs[:attrs_extra].keys.any?
@repository.merge_extra_info(attrs[:attrs_extra])
end
@@ -64,7 +65,7 @@ class RepositoriesController < ApplicationController

def update
attrs = pickup_extra_info
@repository.attributes = attrs[:attrs]
@repository.safe_attributes = attrs[:attrs]
if attrs[:attrs_extra].keys.any?
@repository.merge_extra_info(attrs[:attrs_extra])
end

+ 9
- 0
app/models/repository.rb Переглянути файл

@@ -19,6 +19,7 @@ class ScmFetchError < Exception; end

class Repository < ActiveRecord::Base
include Redmine::Ciphering
include Redmine::SafeAttributes

belongs_to :project
has_many :changesets, :order => "#{Changeset.table_name}.committed_on DESC, #{Changeset.table_name}.id DESC"
@@ -42,6 +43,14 @@ class Repository < ActiveRecord::Base
# Checks if the SCM is enabled when creating a repository
validate :repo_create_validation, :on => :create

safe_attributes 'identifier',
'url',
'login',
'password',
'path_encoding',
'log_encoding',
'is_default'

def repo_create_validation
unless Setting.enabled_scm.include?(self.class.name.demodulize)
errors.add(:type, :invalid)

+ 2
- 0
app/models/repository/cvs.rb Переглянути файл

@@ -21,6 +21,8 @@ require 'digest/sha1'
class Repository::Cvs < Repository
validates_presence_of :url, :root_url, :log_encoding

safe_attributes 'root_url'

def self.human_attribute_name(attribute_key_name, *args)
attr_name = attribute_key_name.to_s
if attr_name == "root_url"

+ 5
- 1
lib/redmine/safe_attributes.rb Переглянути файл

@@ -31,7 +31,11 @@ module Redmine
def safe_attributes(*args)
@safe_attributes ||= []
if args.empty?
@safe_attributes
if superclass.include?(Redmine::SafeAttributes)
@safe_attributes + superclass.safe_attributes
else
@safe_attributes
end
else
options = args.last.is_a?(Hash) ? args.pop : {}
@safe_attributes << [args, options]

Завантаження…
Відмінити
Зберегти