Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
gitlab-ce
Commits
0d9a6fe7
Commit
0d9a6fe7
authored
Mar 04, 2013
by
Andrew8xx8
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
User's blocked field refactored to use state machine
parent
9a06dd4a
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
39 additions
and
32 deletions
+39
-32
app/controllers/admin/users_controller.rb
app/controllers/admin/users_controller.rb
+1
-1
app/controllers/application_controller.rb
app/controllers/application_controller.rb
+2
-2
app/models/user.rb
app/models/user.rb
+20
-14
app/views/admin/users/_form.html.haml
app/views/admin/users/_form.html.haml
+1
-1
app/views/admin/users/index.html.haml
app/views/admin/users/index.html.haml
+1
-1
app/views/admin/users/show.html.haml
app/views/admin/users/show.html.haml
+1
-1
app/views/team_members/_team_member.html.haml
app/views/team_members/_team_member.html.haml
+1
-1
app/views/teams/members/_show.html.haml
app/views/teams/members/_show.html.haml
+1
-1
db/schema.rb
db/schema.rb
+2
-3
lib/api/entities.rb
lib/api/entities.rb
+2
-2
lib/gitlab/auth.rb
lib/gitlab/auth.rb
+4
-2
spec/models/user_spec.rb
spec/models/user_spec.rb
+3
-3
No files found.
app/controllers/admin/users_controller.rb
View file @
0d9a6fe7
...
@@ -45,7 +45,7 @@ class Admin::UsersController < Admin::ApplicationController
...
@@ -45,7 +45,7 @@ class Admin::UsersController < Admin::ApplicationController
end
end
def
unblock
def
unblock
if
admin_user
.
update_attribute
(
:blocked
,
false
)
if
admin_user
.
activate
redirect_to
:back
,
alert:
"Successfully unblocked"
redirect_to
:back
,
alert:
"Successfully unblocked"
else
else
redirect_to
:back
,
alert:
"Error occured. User was not unblocked"
redirect_to
:back
,
alert:
"Error occured. User was not unblocked"
...
...
app/controllers/application_controller.rb
View file @
0d9a6fe7
...
@@ -30,7 +30,7 @@ class ApplicationController < ActionController::Base
...
@@ -30,7 +30,7 @@ class ApplicationController < ActionController::Base
end
end
def
reject_blocked!
def
reject_blocked!
if
current_user
&&
current_user
.
blocked
if
current_user
&&
current_user
.
blocked
?
sign_out
current_user
sign_out
current_user
flash
[
:alert
]
=
"Your account is blocked. Retry when an admin unblock it."
flash
[
:alert
]
=
"Your account is blocked. Retry when an admin unblock it."
redirect_to
new_user_session_path
redirect_to
new_user_session_path
...
@@ -38,7 +38,7 @@ class ApplicationController < ActionController::Base
...
@@ -38,7 +38,7 @@ class ApplicationController < ActionController::Base
end
end
def
after_sign_in_path_for
resource
def
after_sign_in_path_for
resource
if
resource
.
is_a?
(
User
)
&&
resource
.
respond_to?
(
:blocked
)
&&
resource
.
blocked
if
resource
.
is_a?
(
User
)
&&
resource
.
respond_to?
(
:blocked
?
)
&&
resource
.
blocked?
sign_out
resource
sign_out
resource
flash
[
:alert
]
=
"Your account is blocked. Retry when an admin unblock it."
flash
[
:alert
]
=
"Your account is blocked. Retry when an admin unblock it."
new_user_session_path
new_user_session_path
...
...
app/models/user.rb
View file @
0d9a6fe7
...
@@ -25,7 +25,7 @@
...
@@ -25,7 +25,7 @@
# dark_scheme :boolean default(FALSE), not null
# dark_scheme :boolean default(FALSE), not null
# theme_id :integer default(1), not null
# theme_id :integer default(1), not null
# bio :string(255)
# bio :string(255)
#
blocked :boolean default(FALSE), not null
#
state :string(255)
# failed_attempts :integer default(0)
# failed_attempts :integer default(0)
# locked_at :datetime
# locked_at :datetime
# extern_uid :string(255)
# extern_uid :string(255)
...
@@ -87,10 +87,27 @@ class User < ActiveRecord::Base
...
@@ -87,10 +87,27 @@ class User < ActiveRecord::Base
delegate
:path
,
to: :namespace
,
allow_nil:
true
,
prefix:
true
delegate
:path
,
to: :namespace
,
allow_nil:
true
,
prefix:
true
state_machine
:state
,
initial: :active
do
after_transition
any
=>
:blocked
do
|
user
,
transition
|
# Remove user from all projects and
user
.
users_projects
.
find_each
do
|
membership
|
return
false
unless
membership
.
destroy
end
end
event
:block
do
transition
active: :blocked
end
event
:activate
do
transition
blocked: :active
end
end
# Scopes
# Scopes
scope
:admins
,
->
{
where
(
admin:
true
)
}
scope
:admins
,
->
{
where
(
admin:
true
)
}
scope
:blocked
,
->
{
w
here
(
blocked:
true
)
}
scope
:blocked
,
->
{
w
ith_state
(
:blocked
)
}
scope
:active
,
->
{
w
here
(
blocked:
fals
e
)
}
scope
:active
,
->
{
w
ith_state
(
:activ
e
)
}
scope
:alphabetically
,
->
{
order
(
'name ASC'
)
}
scope
:alphabetically
,
->
{
order
(
'name ASC'
)
}
scope
:in_team
,
->
(
team
){
where
(
id:
team
.
member_ids
)
}
scope
:in_team
,
->
(
team
){
where
(
id:
team
.
member_ids
)
}
scope
:not_in_team
,
->
(
team
){
where
(
'users.id NOT IN (:ids)'
,
ids:
team
.
member_ids
)
}
scope
:not_in_team
,
->
(
team
){
where
(
'users.id NOT IN (:ids)'
,
ids:
team
.
member_ids
)
}
...
@@ -260,17 +277,6 @@ class User < ActiveRecord::Base
...
@@ -260,17 +277,6 @@ class User < ActiveRecord::Base
MergeRequest
.
cared
(
self
)
MergeRequest
.
cared
(
self
)
end
end
# Remove user from all projects and
# set blocked attribute to true
def
block
users_projects
.
find_each
do
|
membership
|
return
false
unless
membership
.
destroy
end
self
.
blocked
=
true
save
end
def
projects_limit_percent
def
projects_limit_percent
return
100
if
projects_limit
.
zero?
return
100
if
projects_limit
.
zero?
(
personal_projects
.
count
.
to_f
/
projects_limit
)
*
100
(
personal_projects
.
count
.
to_f
/
projects_limit
)
*
100
...
...
app/views/admin/users/_form.html.haml
View file @
0d9a6fe7
...
@@ -61,7 +61,7 @@
...
@@ -61,7 +61,7 @@
.span4
.span4
-
unless
@admin_user
.
new_record?
-
unless
@admin_user
.
new_record?
.alert.alert-error
.alert.alert-error
-
if
@admin_user
.
blocked
-
if
@admin_user
.
blocked
?
%p
This user is blocked and is not able to login to GitLab
%p
This user is blocked and is not able to login to GitLab
=
link_to
'Unblock User'
,
unblock_admin_user_path
(
@admin_user
),
method: :put
,
class:
"btn btn-small"
=
link_to
'Unblock User'
,
unblock_admin_user_path
(
@admin_user
),
method: :put
,
class:
"btn btn-small"
-
else
-
else
...
...
app/views/admin/users/index.html.haml
View file @
0d9a6fe7
...
@@ -53,7 +53,7 @@
...
@@ -53,7 +53,7 @@
=
link_to
'Edit'
,
edit_admin_user_path
(
user
),
id:
"edit_
#{
dom_id
(
user
)
}
"
,
class:
"btn btn-small"
=
link_to
'Edit'
,
edit_admin_user_path
(
user
),
id:
"edit_
#{
dom_id
(
user
)
}
"
,
class:
"btn btn-small"
-
unless
user
==
current_user
-
unless
user
==
current_user
-
if
user
.
blocked
-
if
user
.
blocked
?
=
link_to
'Unblock'
,
unblock_admin_user_path
(
user
),
method: :put
,
class:
"btn btn-small success"
=
link_to
'Unblock'
,
unblock_admin_user_path
(
user
),
method: :put
,
class:
"btn btn-small success"
-
else
-
else
=
link_to
'Block'
,
block_admin_user_path
(
user
),
confirm:
'USER WILL BE BLOCKED! Are you sure?'
,
method: :put
,
class:
"btn btn-small btn-remove"
=
link_to
'Block'
,
block_admin_user_path
(
user
),
confirm:
'USER WILL BE BLOCKED! Are you sure?'
,
method: :put
,
class:
"btn btn-small btn-remove"
...
...
app/views/admin/users/show.html.haml
View file @
0d9a6fe7
...
@@ -3,7 +3,7 @@
...
@@ -3,7 +3,7 @@
%h3
.page_title
%h3
.page_title
=
image_tag
gravatar_icon
(
@admin_user
.
email
,
90
),
class:
"avatar s90"
=
image_tag
gravatar_icon
(
@admin_user
.
email
,
90
),
class:
"avatar s90"
=
@admin_user
.
name
=
@admin_user
.
name
-
if
@admin_user
.
blocked
-
if
@admin_user
.
blocked
?
%span
.cred
(Blocked)
%span
.cred
(Blocked)
-
if
@admin_user
.
admin
-
if
@admin_user
.
admin
%span
.cred
(Admin)
%span
.cred
(Admin)
...
...
app/views/team_members/_team_member.html.haml
View file @
0d9a6fe7
...
@@ -20,7 +20,7 @@
...
@@ -20,7 +20,7 @@
%span
.label
This is you!
%span
.label
This is you!
-
if
@project
.
namespace_owner
==
user
-
if
@project
.
namespace_owner
==
user
%span
.label
Owner
%span
.label
Owner
-
elsif
user
.
blocked
-
elsif
user
.
blocked
?
%span
.label
Blocked
%span
.label
Blocked
-
elsif
allow_admin
-
elsif
allow_admin
=
link_to
project_team_member_path
(
@project
,
user
),
confirm:
remove_from_project_team_message
(
@project
,
user
),
method: :delete
,
class:
"btn-tiny btn btn-remove"
do
=
link_to
project_team_member_path
(
@project
,
user
),
confirm:
remove_from_project_team_message
(
@project
,
user
),
method: :delete
,
class:
"btn-tiny btn btn-remove"
do
...
...
app/views/teams/members/_show.html.haml
View file @
0d9a6fe7
...
@@ -23,7 +23,7 @@
...
@@ -23,7 +23,7 @@
%span
.btn.disabled
This is you!
%span
.btn.disabled
This is you!
-
if
@team
.
owner
==
user
-
if
@team
.
owner
==
user
%span
.btn.disabled
Owner
%span
.btn.disabled
Owner
-
elsif
user
.
blocked
-
elsif
user
.
blocked
?
%span
.btn.disabled.blocked
Blocked
%span
.btn.disabled.blocked
Blocked
-
elsif
allow_admin
-
elsif
allow_admin
=
link_to
team_member_path
(
@team
,
user
),
confirm:
remove_from_user_team_message
(
@team
,
user
),
method: :delete
,
class:
"btn-tiny btn btn-remove"
,
title:
"Remove from team"
do
=
link_to
team_member_path
(
@team
,
user
),
confirm:
remove_from_user_team_message
(
@team
,
user
),
method: :delete
,
class:
"btn-tiny btn btn-remove"
,
title:
"Remove from team"
do
...
...
db/schema.rb
View file @
0d9a6fe7
...
@@ -11,7 +11,7 @@
...
@@ -11,7 +11,7 @@
#
#
# It's strongly recommended to check this file into your version control system.
# It's strongly recommended to check this file into your version control system.
ActiveRecord
::
Schema
.
define
(
:version
=>
20130
220133245
)
do
ActiveRecord
::
Schema
.
define
(
:version
=>
20130
304105317
)
do
create_table
"events"
,
:force
=>
true
do
|
t
|
create_table
"events"
,
:force
=>
true
do
|
t
|
t
.
string
"target_type"
t
.
string
"target_type"
...
@@ -261,7 +261,6 @@ ActiveRecord::Schema.define(:version => 20130220133245) do
...
@@ -261,7 +261,6 @@ ActiveRecord::Schema.define(:version => 20130220133245) do
t
.
boolean
"dark_scheme"
,
:default
=>
false
,
:null
=>
false
t
.
boolean
"dark_scheme"
,
:default
=>
false
,
:null
=>
false
t
.
integer
"theme_id"
,
:default
=>
1
,
:null
=>
false
t
.
integer
"theme_id"
,
:default
=>
1
,
:null
=>
false
t
.
string
"bio"
t
.
string
"bio"
t
.
boolean
"blocked"
,
:default
=>
false
,
:null
=>
false
t
.
integer
"failed_attempts"
,
:default
=>
0
t
.
integer
"failed_attempts"
,
:default
=>
0
t
.
datetime
"locked_at"
t
.
datetime
"locked_at"
t
.
string
"extern_uid"
t
.
string
"extern_uid"
...
@@ -269,10 +268,10 @@ ActiveRecord::Schema.define(:version => 20130220133245) do
...
@@ -269,10 +268,10 @@ ActiveRecord::Schema.define(:version => 20130220133245) do
t
.
string
"username"
t
.
string
"username"
t
.
boolean
"can_create_group"
,
:default
=>
true
,
:null
=>
false
t
.
boolean
"can_create_group"
,
:default
=>
true
,
:null
=>
false
t
.
boolean
"can_create_team"
,
:default
=>
true
,
:null
=>
false
t
.
boolean
"can_create_team"
,
:default
=>
true
,
:null
=>
false
t
.
string
"state"
end
end
add_index
"users"
,
[
"admin"
],
:name
=>
"index_users_on_admin"
add_index
"users"
,
[
"admin"
],
:name
=>
"index_users_on_admin"
add_index
"users"
,
[
"blocked"
],
:name
=>
"index_users_on_blocked"
add_index
"users"
,
[
"email"
],
:name
=>
"index_users_on_email"
,
:unique
=>
true
add_index
"users"
,
[
"email"
],
:name
=>
"index_users_on_email"
,
:unique
=>
true
add_index
"users"
,
[
"extern_uid"
,
"provider"
],
:name
=>
"index_users_on_extern_uid_and_provider"
,
:unique
=>
true
add_index
"users"
,
[
"extern_uid"
,
"provider"
],
:name
=>
"index_users_on_extern_uid_and_provider"
,
:unique
=>
true
add_index
"users"
,
[
"name"
],
:name
=>
"index_users_on_name"
add_index
"users"
,
[
"name"
],
:name
=>
"index_users_on_name"
...
...
lib/api/entities.rb
View file @
0d9a6fe7
...
@@ -2,11 +2,11 @@ module Gitlab
...
@@ -2,11 +2,11 @@ module Gitlab
module
Entities
module
Entities
class
User
<
Grape
::
Entity
class
User
<
Grape
::
Entity
expose
:id
,
:username
,
:email
,
:name
,
:bio
,
:skype
,
:linkedin
,
:twitter
,
expose
:id
,
:username
,
:email
,
:name
,
:bio
,
:skype
,
:linkedin
,
:twitter
,
:dark_scheme
,
:theme_id
,
:
blocked
,
:created_at
,
:extern_uid
,
:provider
:dark_scheme
,
:theme_id
,
:
state
,
:created_at
,
:extern_uid
,
:provider
end
end
class
UserBasic
<
Grape
::
Entity
class
UserBasic
<
Grape
::
Entity
expose
:id
,
:username
,
:email
,
:name
,
:
blocked
,
:created_at
expose
:id
,
:username
,
:email
,
:name
,
:
state
,
:created_at
end
end
class
UserLogin
<
UserBasic
class
UserLogin
<
UserBasic
...
...
lib/gitlab/auth.rb
View file @
0d9a6fe7
...
@@ -41,10 +41,12 @@ module Gitlab
...
@@ -41,10 +41,12 @@ module Gitlab
password_confirmation:
password
,
password_confirmation:
password
,
projects_limit:
Gitlab
.
config
.
gitlab
.
default_projects_limit
,
projects_limit:
Gitlab
.
config
.
gitlab
.
default_projects_limit
,
},
as: :admin
)
},
as: :admin
)
@user
.
save!
if
Gitlab
.
config
.
omniauth
[
'block_auto_created_users'
]
&&
!
ldap
if
Gitlab
.
config
.
omniauth
[
'block_auto_created_users'
]
&&
!
ldap
@user
.
block
ed
=
true
@user
.
block
end
end
@user
.
save!
@user
@user
end
end
...
...
spec/models/user_spec.rb
View file @
0d9a6fe7
...
@@ -25,7 +25,7 @@
...
@@ -25,7 +25,7 @@
# dark_scheme :boolean default(FALSE), not null
# dark_scheme :boolean default(FALSE), not null
# theme_id :integer default(1), not null
# theme_id :integer default(1), not null
# bio :string(255)
# bio :string(255)
#
blocked :boolean
default(FALSE), not null
#
state :string(255)
default(FALSE), not null
# failed_attempts :integer default(0)
# failed_attempts :integer default(0)
# locked_at :datetime
# locked_at :datetime
# extern_uid :string(255)
# extern_uid :string(255)
...
@@ -140,7 +140,7 @@ describe User do
...
@@ -140,7 +140,7 @@ describe User do
it
"should block user"
do
it
"should block user"
do
user
.
block
user
.
block
user
.
blocked
.
should
be_true
user
.
blocked
?
.
should
be_true
end
end
end
end
...
@@ -149,7 +149,7 @@ describe User do
...
@@ -149,7 +149,7 @@ describe User do
User
.
delete_all
User
.
delete_all
@user
=
create
:user
@user
=
create
:user
@admin
=
create
:user
,
admin:
true
@admin
=
create
:user
,
admin:
true
@blocked
=
create
:user
,
blocked:
true
@blocked
=
create
:user
,
state: :blocked
end
end
it
{
User
.
filter
(
"admins"
).
should
==
[
@admin
]
}
it
{
User
.
filter
(
"admins"
).
should
==
[
@admin
]
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment