OSDN Git Service

Ability to block user
authorrandx <dmitriy.zaporozhets@gmail.com>
Fri, 13 Apr 2012 05:12:34 +0000 (08:12 +0300)
committerrandx <dmitriy.zaporozhets@gmail.com>
Fri, 13 Apr 2012 05:12:34 +0000 (08:12 +0300)
app/controllers/admin/users_controller.rb
app/controllers/application_controller.rb
app/views/admin/projects/index.html.haml
app/views/admin/users/_form.html.haml
app/views/admin/users/index.html.haml
app/views/admin/users/show.html.haml
app/views/team_members/_show.html.haml
db/migrate/20120413135904_add_blocked_field_to_user.rb [new file with mode: 0644]
db/schema.rb

index d7089fa..5b194d8 100644 (file)
@@ -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])
index ff00208..5ae19a7 100644 (file)
@@ -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"
index 079ae38..046cffd 100644 (file)
@@ -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
index bb54c18..2fd4f71 100644 (file)
     .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? 
index 19eb647..a7003f8 100644 (file)
@@ -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"
 
index 21529ab..fd7f4dc 100644 (file)
   %tr
     %td
       %b
+        Blocked:
+        %td= check_box_tag "blocked", 1, @admin_user.blocked, :disabled => :disabled
+  %tr
+    %td
+      %b
         Projects limit:
     %td
       = @admin_user.projects_limit
index 4218a8a..ac648f7 100644 (file)
@@ -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 (file)
index 0000000..050450b
--- /dev/null
@@ -0,0 +1,5 @@
+class AddBlockedFieldToUser < ActiveRecord::Migration
+  def change
+    add_column :users, :blocked, :boolean, :null => false, :default => false
+  end
+end
index 906c5b0..2a33c70 100644 (file)
@@ -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|