diff --git a/app/controllers/admin/users_controller.rb b/app/controllers/admin/users_controller.rb index d7089fad..5b194d89 100644 --- a/app/controllers/admin/users_controller.rb +++ b/app/controllers/admin/users_controller.rb @@ -40,9 +40,11 @@ class Admin::UsersController < ApplicationController def create admin = params[:user].delete("admin") + blocked = params[:user].delete("blocked") @admin_user = User.new(params[:user]) @admin_user.admin = (admin && admin.to_i > 0) + @admin_user.blocked = blocked respond_to do |format| if @admin_user.save @@ -57,6 +59,8 @@ class Admin::UsersController < ApplicationController def update admin = params[:user].delete("admin") + blocked = params[:user].delete("blocked") + if params[:user][:password].blank? params[:user].delete(:password) params[:user].delete(:password_confirmation) @@ -64,6 +68,7 @@ class Admin::UsersController < ApplicationController @admin_user = User.find(params[:id]) @admin_user.admin = (admin && admin.to_i > 0) + @admin_user.blocked = blocked respond_to do |format| if @admin_user.update_attributes(params[:user]) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index ff00208c..5ae19a7b 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -16,6 +16,16 @@ class ApplicationController < ActionController::Base protected + def after_sign_in_path_for resource + if resource.is_a?(User) && resource.respond_to?(:blocked) && resource.blocked + sign_out resource + flash[:alert] = "Your account was blocked" + new_user_session_path + else + super + end + end + def layout_by_resource if devise_controller? "devise" diff --git a/app/views/admin/projects/index.html.haml b/app/views/admin/projects/index.html.haml index 079ae385..046cffdc 100644 --- a/app/views/admin/projects/index.html.haml +++ b/app/views/admin/projects/index.html.haml @@ -1,8 +1,8 @@ %h3 Projects = link_to 'New Project', new_admin_project_path, :class => "btn small right" -%hr -%table.zebra-striped +%br +%table.zebra-striped.table-bordered %thead %th Name %th Path diff --git a/app/views/admin/users/_form.html.haml b/app/views/admin/users/_form.html.haml index bb54c184..2fd4f710 100644 --- a/app/views/admin/users/_form.html.haml +++ b/app/views/admin/users/_form.html.haml @@ -32,10 +32,15 @@ .clearfix = f.label :twitter .input= f.text_field :twitter + %hr .clearfix = f.label :admin do = f.check_box :admin %span Administrator + .clearfix + = f.label :blocked do + = f.check_box :blocked + %span Blocked .actions = f.submit 'Save', :class => "btn primary" - if @admin_user.new_record? diff --git a/app/views/admin/users/index.html.haml b/app/views/admin/users/index.html.haml index 19eb6478..a7003f81 100644 --- a/app/views/admin/users/index.html.haml +++ b/app/views/admin/users/index.html.haml @@ -1,13 +1,14 @@ %h3 Users = link_to 'New User', new_admin_user_path, :class => "btn small right" -%hr -%table.zebra-striped +%br +%table.zebra-striped.table-bordered %thead %th Admin %th Name %th Email %th Projects + %th Blocked %th %th @@ -17,6 +18,7 @@ %td= link_to user.name, [:admin, user] %td= user.email %td= user.users_projects.count + %td= check_box_tag "blocked", 1, user.blocked, :disabled => :disabled %td= link_to 'Edit', edit_admin_user_path(user), :id => "edit_#{dom_id(user)}", :class => "btn small" %td= link_to 'Destroy', [:admin, user], :confirm => 'Are you sure?', :method => :delete, :class => "btn small danger" diff --git a/app/views/admin/users/show.html.haml b/app/views/admin/users/show.html.haml index 21529ab6..fd7f4dcd 100644 --- a/app/views/admin/users/show.html.haml +++ b/app/views/admin/users/show.html.haml @@ -16,6 +16,11 @@ %b Admin: %td= check_box_tag "admin", 1, @admin_user.admin, :disabled => :disabled + %tr + %td + %b + Blocked: + %td= check_box_tag "blocked", 1, @admin_user.blocked, :disabled => :disabled %tr %td %b diff --git a/app/views/team_members/_show.html.haml b/app/views/team_members/_show.html.haml index 4218a8a9..ac648f7c 100644 --- a/app/views/team_members/_show.html.haml +++ b/app/views/team_members/_show.html.haml @@ -13,3 +13,5 @@ = f.select :project_access, options_for_select(UsersProject.access_roles, member.project_access), {}, :class => "medium project-access-select", :disabled => !allow_admin - if @project.owner == user %span.label Project Owner + - if user.blocked + %span.label Blocked diff --git a/db/migrate/20120413135904_add_blocked_field_to_user.rb b/db/migrate/20120413135904_add_blocked_field_to_user.rb new file mode 100644 index 00000000..050450bf --- /dev/null +++ b/db/migrate/20120413135904_add_blocked_field_to_user.rb @@ -0,0 +1,5 @@ +class AddBlockedFieldToUser < ActiveRecord::Migration + def change + add_column :users, :blocked, :boolean, :null => false, :default => false + end +end diff --git a/db/schema.rb b/db/schema.rb index 906c5b00..2a33c709 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20120408181910) do +ActiveRecord::Schema.define(:version => 20120413135904) do create_table "events", :force => true do |t| t.string "target_type" @@ -30,8 +30,8 @@ ActiveRecord::Schema.define(:version => 20120408181910) do t.integer "assignee_id" t.integer "author_id" t.integer "project_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at" + t.datetime "updated_at" t.boolean "closed", :default => false, :null => false t.integer "position", :default => 0 t.boolean "critical", :default => false, :null => false @@ -44,8 +44,8 @@ ActiveRecord::Schema.define(:version => 20120408181910) do create_table "keys", :force => true do |t| t.integer "user_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at" + t.datetime "updated_at" t.text "key" t.string "title" t.string "identifier" @@ -60,10 +60,10 @@ ActiveRecord::Schema.define(:version => 20120408181910) do t.integer "assignee_id" t.string "title" t.boolean "closed", :default => false, :null => false - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.text "st_commits", :limit => 2147483647 - t.text "st_diffs", :limit => 2147483647 + t.datetime "created_at" + t.datetime "updated_at" + t.text "st_commits", :limit => 4294967295 + t.text "st_diffs", :limit => 4294967295 t.boolean "merged", :default => false, :null => false end @@ -84,8 +84,8 @@ ActiveRecord::Schema.define(:version => 20120408181910) do t.string "noteable_id" t.string "noteable_type" t.integer "author_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at" + t.datetime "updated_at" t.integer "project_id" t.string "attachment" t.string "line_code" @@ -98,8 +98,8 @@ ActiveRecord::Schema.define(:version => 20120408181910) do t.string "name" t.string "path" t.text "description" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at" + t.datetime "updated_at" t.boolean "private_flag", :default => true, :null => false t.string "code" t.integer "owner_id" @@ -122,8 +122,8 @@ ActiveRecord::Schema.define(:version => 20120408181910) do t.text "content" t.integer "author_id", :null => false t.integer "project_id", :null => false - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at" + t.datetime "updated_at" t.string "file_name" t.datetime "expires_at" end @@ -156,8 +156,8 @@ ActiveRecord::Schema.define(:version => 20120408181910) do t.datetime "last_sign_in_at" t.string "current_sign_in_ip" t.string "last_sign_in_ip" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at" + t.datetime "updated_at" t.string "name" t.boolean "admin", :default => false, :null => false t.integer "projects_limit", :default => 10 @@ -168,6 +168,7 @@ ActiveRecord::Schema.define(:version => 20120408181910) do t.boolean "dark_scheme", :default => false, :null => false t.integer "theme_id", :default => 1, :null => false t.string "bio" + t.boolean "blocked", :default => false, :null => false end add_index "users", ["email"], :name => "index_users_on_email", :unique => true @@ -176,16 +177,16 @@ ActiveRecord::Schema.define(:version => 20120408181910) do create_table "users_projects", :force => true do |t| t.integer "user_id", :null => false t.integer "project_id", :null => false - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at" + t.datetime "updated_at" t.integer "project_access", :default => 0, :null => false end create_table "web_hooks", :force => true do |t| t.string "url" t.integer "project_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at" + t.datetime "updated_at" end create_table "wikis", :force => true do |t|