Merge branch 'itima_web_refactoring' of github.com:warpc/rosa-build into itima_web_refactoring
Conflicts: app/models/platform.rb
This commit is contained in:
commit
126e9e1db1
|
@ -1,7 +1,45 @@
|
||||||
|
# coding: UTF-8
|
||||||
class ApplicationController < ActionController::Base
|
class ApplicationController < ActionController::Base
|
||||||
protect_from_forgery
|
protect_from_forgery
|
||||||
layout :layout_by_resource
|
layout :layout_by_resource
|
||||||
|
private
|
||||||
|
def checkright(role_id)
|
||||||
|
@role=Role.find(role_id)
|
||||||
|
if @role.name.downcase!="admin"
|
||||||
|
@c = self.controller_name
|
||||||
|
@a = self.action_name
|
||||||
|
case @c
|
||||||
|
when "projects"
|
||||||
|
case @a
|
||||||
|
when "new", "show", "create"
|
||||||
|
@right=1,2
|
||||||
|
when "build", "process_build"
|
||||||
|
@right=3
|
||||||
|
end
|
||||||
|
when "repositories"
|
||||||
|
case @a
|
||||||
|
when "show"
|
||||||
|
@right=4
|
||||||
|
when "add_project", "remove_project"
|
||||||
|
@right=5
|
||||||
|
when "new", "create"
|
||||||
|
@right=6
|
||||||
|
end
|
||||||
|
when "platforms"
|
||||||
|
case @a
|
||||||
|
when "edit", "update", "freeze", "unfreeze"
|
||||||
|
@right=7
|
||||||
|
end
|
||||||
|
else return true
|
||||||
|
end
|
||||||
|
Permission.where(:role_id => @role.id, :right_id => @right).first
|
||||||
|
@ok=false if @permission.nil?
|
||||||
|
if not @ok
|
||||||
|
flash[:notice] = t('layout.not_access')
|
||||||
|
redirect_to(:back)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
protected
|
protected
|
||||||
def layout_by_resource
|
def layout_by_resource
|
||||||
if devise_controller?
|
if devise_controller?
|
||||||
|
@ -11,12 +49,6 @@ class ApplicationController < ActionController::Base
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def get_acter
|
|
||||||
return User.find params[:user_id] if params[:user_id]
|
|
||||||
return Group.find params[:group_id] if params[:group_id]
|
|
||||||
return current_user
|
|
||||||
end
|
|
||||||
|
|
||||||
def authenticate_build_service!
|
def authenticate_build_service!
|
||||||
if request.remote_ip != APP_CONFIG['build_service_ip']
|
if request.remote_ip != APP_CONFIG['build_service_ip']
|
||||||
render :nothing => true, :status => 403
|
render :nothing => true, :status => 403
|
||||||
|
|
|
@ -0,0 +1,60 @@
|
||||||
|
class RolesController < ApplicationController
|
||||||
|
before_filter :find_role, :only => [:show, :edit, :update, :destroy]
|
||||||
|
|
||||||
|
def index
|
||||||
|
@roles = Role.all
|
||||||
|
end
|
||||||
|
|
||||||
|
def show
|
||||||
|
@permissions = Permission.where(:role_id => @role.id)
|
||||||
|
end
|
||||||
|
|
||||||
|
def new
|
||||||
|
@role = Role.new
|
||||||
|
end
|
||||||
|
|
||||||
|
def edit
|
||||||
|
end
|
||||||
|
|
||||||
|
def create
|
||||||
|
@role = Role.new(params[:role])
|
||||||
|
if @role.save
|
||||||
|
for right in params[:right][:id]
|
||||||
|
Permission.create(:role_id => @role.id, :right_id => right)
|
||||||
|
end
|
||||||
|
flash[:notice] = t('flash.role.saved')
|
||||||
|
redirect_to roles_path
|
||||||
|
else
|
||||||
|
flash[:error] = t('flash.role.save_error')
|
||||||
|
render :action => :new
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def update
|
||||||
|
if @role.update_attributes(params[:role])
|
||||||
|
if params[:right][:id]
|
||||||
|
Permission.destroy_all(:role_id => @role.id)
|
||||||
|
for right in params[:right][:id]
|
||||||
|
Permission.create(:role_id => @role.id, :right_id => right)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
flash[:notice] = t('flash.role.saved')
|
||||||
|
redirect_to roles_path
|
||||||
|
else
|
||||||
|
flash[:error] = t('flash.role.save_error')
|
||||||
|
render :action => :edit
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def destroy
|
||||||
|
@role.destroy
|
||||||
|
Permission.destroy_all(:role_id => params[:id])
|
||||||
|
flash[:notice] = t("flash.role.destroyed")
|
||||||
|
redirect_to roles_path
|
||||||
|
end
|
||||||
|
|
||||||
|
protected
|
||||||
|
def find_role
|
||||||
|
@role = Role.find(params[:id])
|
||||||
|
end
|
||||||
|
end
|
|
@ -1,4 +1,33 @@
|
||||||
class Permission < ActiveRecord::Base
|
class Permission < ActiveRecord::Base
|
||||||
belongs_to :right
|
|
||||||
belongs_to :role
|
belongs_to :role
|
||||||
end
|
def name
|
||||||
|
Permission.right(self.right_id)
|
||||||
|
end
|
||||||
|
def self.get_rights_list
|
||||||
|
res=[]
|
||||||
|
for k in 1..8
|
||||||
|
res << [Permission.right(k), k]
|
||||||
|
end
|
||||||
|
return res
|
||||||
|
end
|
||||||
|
def self.right(n)
|
||||||
|
case n
|
||||||
|
when 1
|
||||||
|
"Проекты - Чтение"
|
||||||
|
when 2
|
||||||
|
"Проекты - Чтение/Запись"
|
||||||
|
when 3
|
||||||
|
"Проекты - Сборка"
|
||||||
|
when 4
|
||||||
|
"Репозиторий - Просмотр"
|
||||||
|
when 5
|
||||||
|
"Репозиторий - Изменение состава пакетов"
|
||||||
|
when 6
|
||||||
|
"Платформа - Создание/Удаление репозиториев"
|
||||||
|
when 7
|
||||||
|
"Платформа - Изменение параметров платформы"
|
||||||
|
when 8
|
||||||
|
"Платформа - Сборка"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -1,2 +0,0 @@
|
||||||
class Right < ActiveRecord::Base
|
|
||||||
end
|
|
|
@ -1,5 +1,4 @@
|
||||||
class Role < ActiveRecord::Base
|
class Role < ActiveRecord::Base
|
||||||
has_many :permissions
|
has_many :permissions
|
||||||
has_many :rights, :through => :permissions
|
|
||||||
has_many :relations
|
has_many :relations
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
.group
|
||||||
|
= f.label :name, t("activerecord.attributes.role.name"), :class => :label
|
||||||
|
= f.text_field :name, :class => 'text_field'
|
||||||
|
.group
|
||||||
|
%label.label Разрешения
|
||||||
|
- rights = Permission.get_rights_list
|
||||||
|
- rights_selected = Permission.where(:role_id => @role.id).map { |perm| perm.right_id }
|
||||||
|
= select_tag("right[id]", options_for_select(rights, rights_selected), :size => 10, :multiple => true)
|
||||||
|
|
||||||
|
.group.navform.wat-cf
|
||||||
|
%button.button{:type => "submit"}
|
||||||
|
= image_tag("web-app-theme/icons/tick.png", :alt => t("layout.save"))
|
||||||
|
= t("layout.save")
|
||||||
|
%span.text_button_padding= t("layout.or")
|
||||||
|
= link_to t("layout.cancel"), roles_path, :class => "text_button_padding link_button"
|
|
@ -0,0 +1,12 @@
|
||||||
|
.block
|
||||||
|
.secondary-navigation
|
||||||
|
%ul.wat-cf
|
||||||
|
%li.first= link_to t("layout.roles.list"), roles_path
|
||||||
|
%li= link_to t("layout.roles.new"), new_role_path
|
||||||
|
%li.active= link_to t("layout.roles.edit"), edit_role_path
|
||||||
|
.content
|
||||||
|
%h2.title= t("layout.roles.edit_header")
|
||||||
|
.inner
|
||||||
|
= form_for @role, :url => role_path(@role), :html => { :class => :form } do |f|
|
||||||
|
= render :partial => "form", :locals => {:f => f}
|
||||||
|
- content_for :sidebar, render(:partial => 'sidebar')
|
|
@ -0,0 +1,30 @@
|
||||||
|
.block
|
||||||
|
.secondary-navigation
|
||||||
|
%ul.wat-cf
|
||||||
|
%li.first.active= link_to t("layout.roles.list"), roles_path
|
||||||
|
%li= link_to t("layout.roles.new"), new_role_path
|
||||||
|
.content
|
||||||
|
%h2.title
|
||||||
|
= t("layout.roles.list_header")
|
||||||
|
.inner
|
||||||
|
-unless @roles.empty?
|
||||||
|
%table.table
|
||||||
|
%tr
|
||||||
|
%th.first ID
|
||||||
|
%th= t("activerecord.attributes.role.name")
|
||||||
|
%th.last
|
||||||
|
- @roles.each do |role|
|
||||||
|
%tr{:class => cycle("odd", "even")}
|
||||||
|
%td
|
||||||
|
= role.id
|
||||||
|
%td
|
||||||
|
= link_to role.name, role_path(role)
|
||||||
|
%td.last
|
||||||
|
#{link_to t("layout.show"), role_path(role)} | #{link_to t("layout.edit"), edit_role_path(role)} | #{link_to t("layout.delete"), role_path(role), :method => :delete, :confirm => t("layout.roles.confirm_delete")}
|
||||||
|
.actions-bar.wat-cf
|
||||||
|
.actions
|
||||||
|
-else
|
||||||
|
.inner
|
||||||
|
%label.label Роли отсутствуют,
|
||||||
|
= link_to "создать новую роль", new_role_path
|
||||||
|
- content_for :sidebar, render(:partial => 'sidebar')
|
|
@ -0,0 +1,11 @@
|
||||||
|
.block
|
||||||
|
.secondary-navigation
|
||||||
|
%ul.wat-cf
|
||||||
|
%li.first= link_to t("layout.roles.list"), roles_path
|
||||||
|
%li.active= link_to t("layout.roles.new"), new_role_path
|
||||||
|
.content
|
||||||
|
%h2.title= t("layout.roles.new_header")
|
||||||
|
.inner
|
||||||
|
= form_for :role, :url => roles_path, :html => { :class => :form } do |f|
|
||||||
|
= render :partial => "form", :locals => {:f => f}
|
||||||
|
- content_for :sidebar, render(:partial => 'sidebar')
|
|
@ -0,0 +1,38 @@
|
||||||
|
.block
|
||||||
|
.secondary-navigation
|
||||||
|
%ul.wat-cf
|
||||||
|
%li.first= link_to t("layout.roles.list"), roles_path
|
||||||
|
%li= link_to t("layout.roles.new"), new_role_path
|
||||||
|
%li.active= link_to t("layout.roles.show"), role_path
|
||||||
|
.content
|
||||||
|
.inner
|
||||||
|
%p
|
||||||
|
%b
|
||||||
|
Id
|
||||||
|
\:
|
||||||
|
= @role.id
|
||||||
|
%p
|
||||||
|
%b
|
||||||
|
= t("activerecord.attributes.role.name")
|
||||||
|
\:
|
||||||
|
= @role.name
|
||||||
|
%p
|
||||||
|
%b
|
||||||
|
= t("activerecord.models.permission")
|
||||||
|
\:
|
||||||
|
-unless @permissions.empty?
|
||||||
|
%table.table
|
||||||
|
%tr
|
||||||
|
%th.first ID
|
||||||
|
%th= t("activerecord.attributes.right.name")
|
||||||
|
- @permissions.each do |permission|
|
||||||
|
%tr{:class => cycle("odd", "even")}
|
||||||
|
%td
|
||||||
|
= permission.right_id
|
||||||
|
%td
|
||||||
|
= permission.name
|
||||||
|
.wat-cf
|
||||||
|
= link_to image_tag("web-app-theme/icons/application_edit.png", :alt => t("layout.edit")) + " " + t("layout.edit"), edit_role_path(@role), :class => "button"
|
||||||
|
= link_to image_tag("web-app-theme/icons/cross.png", :alt => t("layout.delete")) + " " + t("layout.delete"), role_path(@role), :method => "delete", :class => "button", :confirm => t("layout.users.confirm_delete")
|
||||||
|
|
||||||
|
- content_for :sidebar, render(:partial => 'sidebar')
|
|
@ -1,14 +0,0 @@
|
||||||
class CreateRights < ActiveRecord::Migration
|
|
||||||
def self.up
|
|
||||||
create_table :rights do |t|
|
|
||||||
t.integer :id
|
|
||||||
t.string :name
|
|
||||||
|
|
||||||
t.timestamps
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def self.down
|
|
||||||
drop_table :rights
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -3,8 +3,6 @@ class CreateRoles < ActiveRecord::Migration
|
||||||
create_table :roles do |t|
|
create_table :roles do |t|
|
||||||
t.integer :id
|
t.integer :id
|
||||||
t.string :name
|
t.string :name
|
||||||
t.string :to
|
|
||||||
t.string :on
|
|
||||||
|
|
||||||
t.timestamps
|
t.timestamps
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue