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
f22488f7
Commit
f22488f7
authored
Mar 05, 2013
by
Dmitriy Zaporozhets
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #3143 from Undev/state-machine-3
State machine 3
parents
f9200e11
c6d6bd6a
Changes
15
Show whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
67 additions
and
32 deletions
+67
-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/migrate/20130304104623_add_state_to_user.rb
db/migrate/20130304104623_add_state_to_user.rb
+5
-0
db/migrate/20130304104740_convert_blocked_to_state.rb
db/migrate/20130304104740_convert_blocked_to_state.rb
+14
-0
db/migrate/20130304105317_remove_blocked_from_user.rb
db/migrate/20130304105317_remove_blocked_from_user.rb
+9
-0
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 @
f22488f7
...
@@ -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 @
f22488f7
...
@@ -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 @
f22488f7
...
@@ -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)
...
@@ -110,10 +110,27 @@ class User < ActiveRecord::Base
...
@@ -110,10 +110,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
)
}
...
@@ -283,17 +300,6 @@ class User < ActiveRecord::Base
...
@@ -283,17 +300,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 @
f22488f7
...
@@ -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 @
f22488f7
...
@@ -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 @
f22488f7
...
@@ -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 @
f22488f7
...
@@ -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 @
f22488f7
...
@@ -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/migrate/20130304104623_add_state_to_user.rb
0 → 100644
View file @
f22488f7
class
AddStateToUser
<
ActiveRecord
::
Migration
def
change
add_column
:users
,
:state
,
:string
end
end
db/migrate/20130304104740_convert_blocked_to_state.rb
0 → 100644
View file @
f22488f7
class
ConvertBlockedToState
<
ActiveRecord
::
Migration
def
up
User
.
transaction
do
User
.
where
(
blocked:
true
).
update_all
(
state: :blocked
)
User
.
where
(
blocked:
false
).
update_all
(
state: :active
)
end
end
def
down
User
.
transaction
do
User
.
where
(
state: :blocked
).
update_all
(
blocked: :true
)
end
end
end
db/migrate/20130304105317_remove_blocked_from_user.rb
0 → 100644
View file @
f22488f7
class
RemoveBlockedFromUser
<
ActiveRecord
::
Migration
def
up
remove_column
:users
,
:blocked
end
def
down
add_column
:users
,
:blocked
,
:boolean
end
end
db/schema.rb
View file @
f22488f7
...
@@ -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 @
f22488f7
...
@@ -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 @
f22488f7
...
@@ -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 @
f22488f7
...
@@ -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