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
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
c9def945
Commit
c9def945
authored
Apr 16, 2012
by
Dmitriy Zaporozhets
2
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
User blocking improved. Admin area styled
parent
c0df0cd7
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
231 additions
and
109 deletions
+231
-109
CHANGELOG
CHANGELOG
+8
-0
app/assets/stylesheets/gitlab_bootstrap.scss
app/assets/stylesheets/gitlab_bootstrap.scss
+14
-0
app/controllers/admin/users_controller.rb
app/controllers/admin/users_controller.rb
+23
-5
app/controllers/application_controller.rb
app/controllers/application_controller.rb
+9
-0
app/models/user.rb
app/models/user.rb
+30
-0
app/views/admin/projects/index.html.haml
app/views/admin/projects/index.html.haml
+1
-1
app/views/admin/projects/show.html.haml
app/views/admin/projects/show.html.haml
+37
-38
app/views/admin/users/_form.html.haml
app/views/admin/users/_form.html.haml
+48
-34
app/views/admin/users/index.html.haml
app/views/admin/users/index.html.haml
+22
-4
app/views/admin/users/show.html.haml
app/views/admin/users/show.html.haml
+35
-25
app/views/help/index.html.haml
app/views/help/index.html.haml
+1
-1
app/views/layouts/admin.html.haml
app/views/layouts/admin.html.haml
+1
-1
config/routes.rb
config/routes.rb
+2
-0
No files found.
CHANGELOG
View file @
c9def945
v 2.4.0
- Ability to block user
- Simplified dashboard area
- Improved admin area
- Accept merge request
- Bootstrap 2.0
- Responsive layout
- Big commits handling
- Perfomance improved
- Milestones
v 2.3.1
- Issues pagination
...
...
app/assets/stylesheets/gitlab_bootstrap.scss
View file @
c9def945
...
...
@@ -450,3 +450,17 @@ form {
}
}
table
.admin-table
{
@extend
.table-bordered
;
@extend
.zebra-striped
;
th
{
border-color
:
#CCC
;
border-bottom
:
1px
solid
#bbb
;
background
:
#eee
;
background-image
:
-webkit-gradient
(
linear
,
0
0
,
0
30
,
color-stop
(
0
.066
,
#eee
)
,
to
(
#dfdfdf
));
background-image
:
-webkit-linear-gradient
(
#eee
6
.6%
,
#dfdfdf
);
background-image
:
-moz-linear-gradient
(
#eee
6
.6%
,
#dfdfdf
);
background-image
:
-o-linear-gradient
(
#eee
6
.6%
,
#dfdfdf
);
}
}
app/controllers/admin/users_controller.rb
View file @
c9def945
...
...
@@ -4,7 +4,9 @@ class Admin::UsersController < ApplicationController
before_filter
:authenticate_admin!
def
index
@admin_users
=
User
.
page
(
params
[
:page
])
@admin_users
=
User
.
scoped
@admin_users
=
@admin_users
.
filter
(
params
[
:filter
])
@admin_users
=
@admin_users
.
order
(
"updated_at DESC"
).
page
(
params
[
:page
])
end
def
show
...
...
@@ -38,13 +40,31 @@ class Admin::UsersController < ApplicationController
@admin_user
=
User
.
find
(
params
[
:id
])
end
def
block
@admin_user
=
User
.
find
(
params
[
:id
])
if
@admin_user
.
block
redirect_to
:back
,
alert:
"Successfully blocked"
else
redirect_to
:back
,
alert:
"Error occured. User was not blocked"
end
end
def
unblock
@admin_user
=
User
.
find
(
params
[
:id
])
if
@admin_user
.
update_attribute
(
:blocked
,
false
)
redirect_to
:back
,
alert:
"Successfully unblocked"
else
redirect_to
:back
,
alert:
"Error occured. User was not unblocked"
end
end
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
...
...
@@ -59,7 +79,6 @@ 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
)
...
...
@@ -68,7 +87,6 @@ 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
])
...
...
app/controllers/application_controller.rb
View file @
c9def945
class
ApplicationController
<
ActionController
::
Base
before_filter
:authenticate_user!
before_filter
:reject_blocked!
before_filter
:set_current_user_for_mailer
protect_from_forgery
helper_method
:abilities
,
:can?
...
...
@@ -16,6 +17,14 @@ class ApplicationController < ActionController::Base
protected
def
reject_blocked!
if
current_user
&&
current_user
.
blocked
sign_out
current_user
flash
[
:alert
]
=
"Your account was blocked"
redirect_to
new_user_session_path
end
end
def
after_sign_in_path_for
resource
if
resource
.
is_a?
(
User
)
&&
resource
.
respond_to?
(
:blocked
)
&&
resource
.
blocked
sign_out
resource
...
...
app/models/user.rb
View file @
c9def945
...
...
@@ -48,7 +48,25 @@ class User < ActiveRecord::Base
before_create
:ensure_authentication_token
alias_attribute
:private_token
,
:authentication_token
scope
:not_in_project
,
lambda
{
|
project
|
where
(
"id not in (:ids)"
,
:ids
=>
project
.
users
.
map
(
&
:id
)
)
}
scope
:admins
,
where
(
:admin
=>
true
)
scope
:blocked
,
where
(
:blocked
=>
true
)
scope
:active
,
where
(
:blocked
=>
false
)
def
self
.
filter
filter_name
case
filter_name
when
"admins"
;
self
.
admins
when
"blocked"
;
self
.
blocked
when
"wop"
;
self
.
without_projects
else
self
.
active
end
end
def
self
.
without_projects
where
(
'id NOT IN (SELECT DISTINCT(user_id) FROM users_projects)'
)
end
def
identifier
email
.
gsub
/[@.]/
,
"_"
...
...
@@ -58,6 +76,7 @@ class User < ActiveRecord::Base
admin
end
def
require_ssh_key?
keys
.
count
==
0
end
...
...
@@ -101,6 +120,17 @@ class User < ActiveRecord::Base
def
project_ids
projects
.
map
(
&
:id
)
end
# Remove user from all projects and
# set blocked attribute to true
def
block
users_projects
.
all
.
each
do
|
membership
|
return
false
unless
membership
.
destroy
end
self
.
blocked
=
true
save
end
end
# == Schema Information
#
...
...
app/views/admin/projects/index.html.haml
View file @
c9def945
...
...
@@ -2,7 +2,7 @@
Projects
=
link_to
'New Project'
,
new_admin_project_path
,
:class
=>
"btn small right"
%br
%table
.
zebra-striped.table-bordered
%table
.
admin-table
%thead
%th
Name
%th
Path
...
...
app/views/admin/projects/show.html.haml
View file @
c9def945
...
...
@@ -2,9 +2,8 @@
=
@admin_project
.
name
=
link_to
'Edit'
,
edit_admin_project_path
(
@admin_project
),
:class
=>
"btn right small"
%hr
%table
.zebra-striped
%br
%table
.zebra-striped.table-bordered
%tr
%td
%b
...
...
@@ -29,47 +28,47 @@
Description:
%td
=
@admin_project
.
description
%br
%h3
Team
%small
(
#{
@admin_project
.
users_projects
.
count
}
)
%br
%table
.zebra-striped.table-bordered
%thead
%tr
%th
Name
%th
Project Access
%th
Repository Access
%th
-
@admin_project
.
users_projects
.
each
do
|
tm
|
%tr
%td
=
link_to
tm
.
user_name
,
admin_user_path
(
tm
.
user
)
%td
=
select_tag
:tm_project_access
,
options_for_select
(
Project
.
access_options
,
tm
.
project_access
),
:class
=>
"medium project-access-select"
,
:disabled
=>
:disabled
%td
=
link_to
'Edit Access'
,
edit_admin_team_member_path
(
tm
),
:class
=>
"btn small"
%td
=
link_to
'Remove from team'
,
admin_team_member_path
(
tm
),
:confirm
=>
'Are you sure?'
,
:method
=>
:delete
,
:class
=>
"btn danger small"
.span12
%h3
Team
%small
(
#{
@admin_project
.
users_projects
.
count
}
)
%hr
%table
.zebra-striped
%br
%h3
Add new team member
%br
=
form_tag
team_update_admin_project_path
(
@admin_project
),
:class
=>
"bulk_import"
,
:method
=>
:put
do
%table
.zebra-striped.table-bordered
%thead
%tr
%th
Name
%th
Project Access
%th
Repository Access
%th
%th
Users
%th
Project Access:
-
@admin_project
.
users_projects
.
each
do
|
tm
|
%tr
%td
=
link_to
tm
.
user_name
,
admin_user_path
(
tm
.
user
)
%td
=
select_tag
:tm_project_access
,
options_for_select
(
Project
.
access_options
,
tm
.
project_access
),
:class
=>
"medium project-access-select"
,
:disabled
=>
:disabled
%td
=
link_to
'Edit Access'
,
edit_admin_team_member_path
(
tm
),
:class
=>
"btn small"
%td
=
link_to
'Remove from team'
,
admin_team_member_path
(
tm
),
:confirm
=>
'Are you sure?'
,
:method
=>
:delete
,
:class
=>
"btn danger small"
=
form_tag
team_update_admin_project_path
(
@admin_project
),
:class
=>
"bulk_import"
,
:method
=>
:put
do
%table
%thead
%tr
%th
Users
%th
Project Access:
%th
Repo Access:
%tr
%td
=
select_tag
:user_ids
,
options_from_collection_for_select
(
@users
,
:id
,
:name
),
:multiple
=>
true
%td
=
select_tag
:project_access
,
options_for_select
(
Project
.
access_options
),
:class
=>
"project-access-select"
%tr
%td
=
select_tag
:user_ids
,
options_from_collection_for_select
(
@users
,
:id
,
:name
),
:multiple
=>
true
%td
=
select_tag
:project_access
,
options_for_select
(
Project
.
access_options
),
:class
=>
"project-access-select"
.actions
=
submit_tag
'Add'
,
:class
=>
"btn primary"
%tr
%td
=
submit_tag
'Add'
,
:class
=>
"btn primary"
%td
Read more about project permissions
%strong
=
link_to
"here"
,
help_permissions_path
,
:class
=>
"vlink"
:css
form
select
{
...
...
app/views/admin/users/_form.html.haml
View file @
c9def945
...
...
@@ -6,41 +6,55 @@
-
@admin_user
.
errors
.
full_messages
.
each
do
|
msg
|
%li
=
msg
.clearfix
=
f
.
label
:name
.input
=
f
.
text_field
:name
.clearfix
=
f
.
label
:email
.input
=
f
.
text_field
:email
.clearfix
=
f
.
label
:password
.input
=
f
.
password_field
:password
.clearfix
=
f
.
label
:password_confirmation
.input
=
f
.
password_field
:password_confirmation
.row
.span6
.clearfix
=
f
.
label
:name
.input
=
f
.
text_field
:name
%span
.help-inline
* requried
.clearfix
=
f
.
label
:email
.input
=
f
.
text_field
:email
%span
.help-inline
* requried
.clearfix
=
f
.
label
:password
.input
=
f
.
password_field
:password
.clearfix
=
f
.
label
:password_confirmation
.input
=
f
.
password_field
:password_confirmation
%hr
.clearfix
=
f
.
label
:skype
.input
=
f
.
text_field
:skype
.clearfix
=
f
.
label
:linkedin
.input
=
f
.
text_field
:linkedin
.clearfix
=
f
.
label
:twitter
.input
=
f
.
text_field
:twitter
.span6
.clearfix
=
f
.
label
:projects_limit
.input
=
f
.
text_field
:projects_limit
,
:class
=>
"small_input"
.clearfix
=
f
.
label
:projects_limit
.input
=
f
.
text_field
:projects_limit
,
:class
=>
"small_input"
.clearfix
=
f
.
label
:skype
.input
=
f
.
text_field
:skype
.clearfix
=
f
.
label
:linkedin
.input
=
f
.
text_field
:linkedin
.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
.alert
.clearfix
%p
Give user ability to manage application.
=
f
.
label
:admin
,
:class
=>
"checkbox"
do
=
f
.
check_box
:admin
%span
Administrator
-
unless
@admin_user
.
new_record?
.alert.alert-error
-
if
@admin_user
.
blocked
%span
=
link_to
'Unblock'
,
unblock_admin_user_path
(
@admin_user
),
:method
=>
:put
,
:class
=>
"btn small"
This user is blocked and is not able to login GitLab
-
else
%span
=
link_to
'Block'
,
block_admin_user_path
(
@admin_user
),
:confirm
=>
'USER WILL BE BLOCKED! Are you sure?'
,
:method
=>
:put
,
:class
=>
"btn small danger"
Blocked user will removed from all projects
&
will not be able to login to GitLab.
.actions
=
f
.
submit
'Save'
,
:class
=>
"btn primary"
-
if
@admin_user
.
new_record?
...
...
app/views/admin/users/index.html.haml
View file @
c9def945
...
...
@@ -2,15 +2,29 @@
Users
=
link_to
'New User'
,
new_admin_user_path
,
:class
=>
"btn small right"
%br
%table
.zebra-striped.table-bordered
%ul
.nav.nav-pills
%li
{
:class
=>
"#{'active' unless params[:filter]}"
}
=
link_to
"Active"
,
admin_users_path
%li
{
:class
=>
"#{'active' if params[:filter] == "
admins
"}"
}
=
link_to
admin_users_path
(
:filter
=>
"admins"
)
do
Admins
%li
{
:class
=>
"#{'active' if params[:filter] == "
blocked
"}"
}
=
link_to
admin_users_path
(
:filter
=>
"blocked"
)
do
Blocked
%li
{
:class
=>
"#{'active' if params[:filter] == "
wop
"}"
}
=
link_to
admin_users_path
(
:filter
=>
"wop"
)
do
Without projects
%table
.admin-table
%thead
%th
Admin
%th
Name
%th
Email
%th
Projects
%th
Edit
%th
Blocked
%th
%th
-
@admin_users
.
each
do
|
user
|
%tr
...
...
@@ -18,8 +32,12 @@
%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"
%td
-
if
user
.
blocked
=
link_to
'Unblock'
,
unblock_admin_user_path
(
user
),
:method
=>
:put
,
:class
=>
"btn small success"
-
else
=
link_to
'Block'
,
block_admin_user_path
(
user
),
:confirm
=>
'USER WILL BE BLOCKED! Are you sure?'
,
:method
=>
:put
,
:class
=>
"btn small danger"
%td
=
link_to
'Destroy'
,
[
:admin
,
user
],
:confirm
=>
'USER WILL BE REMOVED! Are you sure?'
,
:method
=>
:delete
,
:class
=>
"btn small danger"
=
paginate
@admin_users
,
:theme
=>
"admin"
app/views/admin/users/show.html.haml
View file @
c9def945
%h3
=
@admin_user
.
name
-
if
@admin_user
.
blocked
%small
Blocked
-
if
@admin_user
.
admin
%small
Administrator
=
link_to
'Edit'
,
edit_admin_user_path
(
@admin_user
),
:class
=>
"btn small right"
%
h
r
%
b
r
%table
.zebra-striped
%table
.zebra-striped
.table-bordered
%tr
%td
%b
...
...
@@ -49,41 +53,47 @@
%td
=
@admin_user
.
twitter
%h3
Projects
%hr
%table
.zebra-striped
%tr
%thead
%th
Name
%th
Project Access
%th
Repository Access
%th
%th
-
@admin_user
.
users_projects
.
each
do
|
tm
|
-
project
=
tm
.
project
%tr
%td
=
link_to
project
.
name
,
admin_project_path
(
project
)
%td
=
select_tag
:tm_project_access
,
options_for_select
(
Project
.
access_options
,
tm
.
project_access
),
:class
=>
"medium project-access-select"
,
:disabled
=>
:disabled
%td
=
link_to
'Edit Access'
,
edit_admin_team_member_path
(
tm
),
:class
=>
"btn small"
%td
=
link_to
'Remove from team'
,
admin_team_member_path
(
tm
),
:confirm
=>
'Are you sure?'
,
:method
=>
:delete
,
:class
=>
"btn small danger"
%br
%h3
Add User to Projects
%br
=
form_tag
team_update_admin_user_path
(
@admin_user
),
:class
=>
"bulk_import"
,
:method
=>
:put
do
%table
%table
.table-bordered
%thead
%tr
%th
Projects
%th
Project Access:
%th
Repo Access:
%tr
%td
=
select_tag
:project_ids
,
options_from_collection_for_select
(
@projects
,
:id
,
:name
),
:multiple
=>
true
%td
=
select_tag
:project_access
,
options_for_select
(
Project
.
access_options
),
:class
=>
"project-access-select"
.actions
=
submit_tag
'Add'
,
:class
=>
"btn primary"
%tr
%td
=
submit_tag
'Add'
,
:class
=>
"btn primary"
%td
Read more about project permissions
%strong
=
link_to
"here"
,
help_permissions_path
,
:class
=>
"vlink"
%br
-
if
@admin_user
.
projects
.
present?
%h3
Projects
%br
%table
.zebra-striped.table-bordered
%tr
%thead
%th
Name
%th
Project Access
%th
%th
-
@admin_user
.
users_projects
.
each
do
|
tm
|
-
project
=
tm
.
project
%tr
%td
=
link_to
project
.
name
,
admin_project_path
(
project
)
%td
=
select_tag
:tm_project_access
,
options_for_select
(
Project
.
access_options
,
tm
.
project_access
),
:class
=>
"medium project-access-select"
,
:disabled
=>
:disabled
%td
=
link_to
'Edit Access'
,
edit_admin_team_member_path
(
tm
),
:class
=>
"btn small"
%td
=
link_to
'Remove from team'
,
admin_team_member_path
(
tm
),
:confirm
=>
'Are you sure?'
,
:method
=>
:delete
,
:class
=>
"btn small danger"
:css
form
select
{
...
...
app/views/help/index.html.haml
View file @
c9def945
%h3
Gitlabhq
%span
.right
v2.
3
%span
.right
v2.
4
%hr
%h4
Self Hosted Git Management
%h4
Fast, secure and stable solution based on Ruby on Rails
&
Gitolite.
...
...
app/views/layouts/admin.html.haml
View file @
c9def945
...
...
@@ -7,8 +7,8 @@
.container
%nav
.main_menu
=
render
"layouts/const_menu_links"
=
link_to
"Users"
,
admin_users_path
,
:class
=>
controller
.
controller_name
==
"users"
?
"current"
:
nil
=
link_to
"Projects"
,
admin_projects_path
,
:class
=>
controller
.
controller_name
==
"projects"
?
"current"
:
nil
=
link_to
"Users"
,
admin_users_path
,
:class
=>
controller
.
controller_name
==
"users"
?
"current"
:
nil
=
link_to
"Emails"
,
admin_emails_path
,
:class
=>
controller
.
controller_name
==
"mailer"
?
"current"
:
nil
=
link_to
"Resque"
,
"/info/resque"
...
...
config/routes.rb
View file @
c9def945
...
...
@@ -14,6 +14,8 @@ Gitlab::Application.routes.draw do
resources
:users
do
member
do
put
:team_update
put
:block
put
:unblock
end
end
resources
:projects
,
:constraints
=>
{
:id
=>
/[^\/]+/
}
do
...
...
Alain Takoudjou
@alain.takoudjou
mentioned in commit
b1c94754
·
May 03, 2017
mentioned in commit
b1c94754
mentioned in commit b1c94754436e4c15529276a61d601f72bb53c2b2
Toggle commit list
Alain Takoudjou
@alain.takoudjou
mentioned in commit
17be364d
·
May 03, 2017
mentioned in commit
17be364d
mentioned in commit 17be364d072298f42d77fd22189bf9289b7cda2e
Toggle commit list
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