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
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Tatuya Kamada
gitlab-ce
Commits
8184a656
Commit
8184a656
authored
Feb 19, 2015
by
Dmitriy Zaporozhets
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Revert "Fix broken access control and refactor avatar upload"
This reverts commit
7d5f86f6
.
parent
7c3147e6
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
27 additions
and
90 deletions
+27
-90
app/controllers/files_controller.rb
app/controllers/files_controller.rb
+1
-3
app/models/group.rb
app/models/group.rb
+1
-1
app/models/project.rb
app/models/project.rb
+1
-1
app/models/user.rb
app/models/user.rb
+1
-1
app/uploaders/attachment_uploader.rb
app/uploaders/attachment_uploader.rb
+7
-1
app/uploaders/avatar_uploader.rb
app/uploaders/avatar_uploader.rb
+0
-32
db/migrate/20150213111727_move_note_folder.rb
db/migrate/20150213111727_move_note_folder.rb
+0
-19
features/steps/groups.rb
features/steps/groups.rb
+1
-1
features/steps/profile/profile.rb
features/steps/profile/profile.rb
+1
-1
features/steps/project/project.rb
features/steps/project/project.rb
+1
-1
lib/backup/manager.rb
lib/backup/manager.rb
+1
-1
lib/backup/uploads.rb
lib/backup/uploads.rb
+12
-28
uploads/.gitkeep
uploads/.gitkeep
+0
-0
No files found.
app/controllers/files_controller.rb
View file @
8184a656
...
@@ -6,9 +6,7 @@ class FilesController < ApplicationController
...
@@ -6,9 +6,7 @@ class FilesController < ApplicationController
if
uploader
.
file_storage?
if
uploader
.
file_storage?
if
can?
(
current_user
,
:read_project
,
note
.
project
)
if
can?
(
current_user
,
:read_project
,
note
.
project
)
disposition
=
uploader
.
image?
?
'inline'
:
'attachment'
disposition
=
uploader
.
image?
?
'inline'
:
'attachment'
# Replace old notes location in /public with the new one in / and send the file
send_file
uploader
.
file
.
path
,
disposition:
disposition
path
=
uploader
.
file
.
path
.
gsub
(
"
#{
Rails
.
root
}
/public"
,
Rails
.
root
.
to_s
)
send_file
path
,
disposition:
disposition
else
else
not_found!
not_found!
end
end
...
...
app/models/group.rb
View file @
8184a656
...
@@ -23,7 +23,7 @@ class Group < Namespace
...
@@ -23,7 +23,7 @@ class Group < Namespace
validate
:avatar_type
,
if:
->
(
user
)
{
user
.
avatar_changed?
}
validate
:avatar_type
,
if:
->
(
user
)
{
user
.
avatar_changed?
}
validates
:avatar
,
file_size:
{
maximum:
200
.
kilobytes
.
to_i
}
validates
:avatar
,
file_size:
{
maximum:
200
.
kilobytes
.
to_i
}
mount_uploader
:avatar
,
A
vatar
Uploader
mount_uploader
:avatar
,
A
ttachment
Uploader
after_create
:post_create_hook
after_create
:post_create_hook
after_destroy
:post_destroy_hook
after_destroy
:post_destroy_hook
...
...
app/models/project.rb
View file @
8184a656
...
@@ -138,7 +138,7 @@ class Project < ActiveRecord::Base
...
@@ -138,7 +138,7 @@ class Project < ActiveRecord::Base
if:
->
(
project
)
{
project
.
avatar
&&
project
.
avatar_changed?
}
if:
->
(
project
)
{
project
.
avatar
&&
project
.
avatar_changed?
}
validates
:avatar
,
file_size:
{
maximum:
200
.
kilobytes
.
to_i
}
validates
:avatar
,
file_size:
{
maximum:
200
.
kilobytes
.
to_i
}
mount_uploader
:avatar
,
A
vatar
Uploader
mount_uploader
:avatar
,
A
ttachment
Uploader
# Scopes
# Scopes
scope
:sorted_by_activity
,
->
{
reorder
(
last_activity_at: :desc
)
}
scope
:sorted_by_activity
,
->
{
reorder
(
last_activity_at: :desc
)
}
...
...
app/models/user.rb
View file @
8184a656
...
@@ -177,7 +177,7 @@ class User < ActiveRecord::Base
...
@@ -177,7 +177,7 @@ class User < ActiveRecord::Base
end
end
end
end
mount_uploader
:avatar
,
A
vatar
Uploader
mount_uploader
:avatar
,
A
ttachment
Uploader
# Scopes
# Scopes
scope
:admins
,
->
{
where
(
admin:
true
)
}
scope
:admins
,
->
{
where
(
admin:
true
)
}
...
...
app/uploaders/attachment_uploader.rb
View file @
8184a656
...
@@ -3,8 +3,10 @@
...
@@ -3,8 +3,10 @@
class
AttachmentUploader
<
CarrierWave
::
Uploader
::
Base
class
AttachmentUploader
<
CarrierWave
::
Uploader
::
Base
storage
:file
storage
:file
after
:store
,
:reset_events_cache
def
store_dir
def
store_dir
"
#{
Rails
.
root
}
/
uploads/
#{
model
.
class
.
to_s
.
underscore
}
/
#{
mounted_as
}
/
#{
model
.
id
}
"
"uploads/
#{
model
.
class
.
to_s
.
underscore
}
/
#{
mounted_as
}
/
#{
model
.
id
}
"
end
end
def
image?
def
image?
...
@@ -27,4 +29,8 @@ class AttachmentUploader < CarrierWave::Uploader::Base
...
@@ -27,4 +29,8 @@ class AttachmentUploader < CarrierWave::Uploader::Base
def
file_storage?
def
file_storage?
self
.
class
.
storage
==
CarrierWave
::
Storage
::
File
self
.
class
.
storage
==
CarrierWave
::
Storage
::
File
end
end
def
reset_events_cache
(
file
)
model
.
reset_events_cache
if
model
.
is_a?
(
User
)
end
end
end
app/uploaders/avatar_uploader.rb
deleted
100644 → 0
View file @
7c3147e6
# encoding: utf-8
class
AvatarUploader
<
CarrierWave
::
Uploader
::
Base
storage
:file
after
:store
,
:reset_events_cache
def
store_dir
"uploads/
#{
model
.
class
.
to_s
.
underscore
}
/
#{
mounted_as
}
/
#{
model
.
id
}
"
end
def
image?
img_ext
=
%w(png jpg jpeg gif bmp tiff)
if
file
.
respond_to?
(
:extension
)
img_ext
.
include?
(
file
.
extension
.
downcase
)
else
# Not all CarrierWave storages respond to :extension
ext
=
file
.
path
.
split
(
'.'
).
last
.
downcase
img_ext
.
include?
(
ext
)
end
rescue
false
end
def
file_storage?
self
.
class
.
storage
==
CarrierWave
::
Storage
::
File
end
def
reset_events_cache
(
file
)
model
.
reset_events_cache
if
model
.
is_a?
(
User
)
end
end
db/migrate/20150213111727_move_note_folder.rb
deleted
100644 → 0
View file @
7c3147e6
class
MoveNoteFolder
<
ActiveRecord
::
Migration
def
up
system
(
"if [ -d '
#{
Rails
.
root
}
/public/uploads/note' ];
then mv
#{
Rails
.
root
}
/public/uploads/note
#{
Rails
.
root
}
/uploads/note;
echo 'note folder has been moved successfully';
else
echo 'note folder has already been moved or does not exist yet. Nothing to do here.'; fi"
)
end
def
down
system
(
"if [ -d '
#{
Rails
.
root
}
/uploads/note' ];
then mv
#{
Rails
.
root
}
/uploads/note
#{
Rails
.
root
}
/public/uploads/note;
echo 'note folder has been moved successfully';
else
echo 'note folder has already been moved or does not exist yet. Nothing to do here.'; fi"
)
end
end
features/steps/groups.rb
View file @
8184a656
...
@@ -110,7 +110,7 @@ class Spinach::Features::Groups < Spinach::FeatureSteps
...
@@ -110,7 +110,7 @@ class Spinach::Features::Groups < Spinach::FeatureSteps
end
end
step
'I should see new group "Owned" avatar'
do
step
'I should see new group "Owned" avatar'
do
Group
.
find_by
(
name:
"Owned"
).
avatar
.
should
be_instance_of
A
vatar
Uploader
Group
.
find_by
(
name:
"Owned"
).
avatar
.
should
be_instance_of
A
ttachment
Uploader
Group
.
find_by
(
name:
"Owned"
).
avatar
.
url
.
should
==
"/uploads/group/avatar/
#{
Group
.
find_by
(
name
:"Owned"
).
id
}
/gitlab_logo.png"
Group
.
find_by
(
name:
"Owned"
).
avatar
.
url
.
should
==
"/uploads/group/avatar/
#{
Group
.
find_by
(
name
:"Owned"
).
id
}
/gitlab_logo.png"
end
end
...
...
features/steps/profile/profile.rb
View file @
8184a656
...
@@ -29,7 +29,7 @@ class Spinach::Features::Profile < Spinach::FeatureSteps
...
@@ -29,7 +29,7 @@ class Spinach::Features::Profile < Spinach::FeatureSteps
end
end
step
'I should see new avatar'
do
step
'I should see new avatar'
do
@user
.
avatar
.
should
be_instance_of
A
vatar
Uploader
@user
.
avatar
.
should
be_instance_of
A
ttachment
Uploader
@user
.
avatar
.
url
.
should
==
"/uploads/user/avatar/
#{
@user
.
id
}
/gitlab_logo.png"
@user
.
avatar
.
url
.
should
==
"/uploads/user/avatar/
#{
@user
.
id
}
/gitlab_logo.png"
end
end
...
...
features/steps/project/project.rb
View file @
8184a656
...
@@ -35,7 +35,7 @@ class Spinach::Features::Project < Spinach::FeatureSteps
...
@@ -35,7 +35,7 @@ class Spinach::Features::Project < Spinach::FeatureSteps
end
end
step
'I should see new project avatar'
do
step
'I should see new project avatar'
do
@project
.
avatar
.
should
be_instance_of
A
vatar
Uploader
@project
.
avatar
.
should
be_instance_of
A
ttachment
Uploader
url
=
@project
.
avatar
.
url
url
=
@project
.
avatar
.
url
url
.
should
==
"/uploads/project/avatar/
#{
@project
.
id
}
/gitlab_logo.png"
url
.
should
==
"/uploads/project/avatar/
#{
@project
.
id
}
/gitlab_logo.png"
end
end
...
...
lib/backup/manager.rb
View file @
8184a656
module
Backup
module
Backup
class
Manager
class
Manager
BACKUP_CONTENTS
=
%w{repositories/ db/
public/
uploads/ backup_information.yml}
BACKUP_CONTENTS
=
%w{repositories/ db/ uploads/ backup_information.yml}
def
pack
def
pack
# saving additional informations
# saving additional informations
...
...
lib/backup/uploads.rb
View file @
8184a656
module
Backup
module
Backup
class
Uploads
class
Uploads
attr_reader
:app_public_uploads_dir
,
:app_private_uploads_dir
,
:backup_public_uploads_dir
,
attr_reader
:app_uploads_dir
,
:backup_uploads_dir
,
:backup_dir
:backup_private_uploads_dir
,
:backup_dir
,
:backup_public_dir
def
initialize
def
initialize
@app_public_uploads_dir
=
File
.
realpath
(
Rails
.
root
.
join
(
'public'
,
'uploads'
))
@app_uploads_dir
=
File
.
realpath
(
Rails
.
root
.
join
(
'public'
,
'uploads'
))
@app_private_uploads_dir
=
File
.
realpath
(
Rails
.
root
.
join
(
'uploads'
))
@backup_dir
=
Gitlab
.
config
.
backup
.
path
@backup_dir
=
Gitlab
.
config
.
backup
.
path
@backup_public_dir
=
File
.
join
(
backup_dir
,
'public'
)
@backup_uploads_dir
=
File
.
join
(
Gitlab
.
config
.
backup
.
path
,
'uploads'
)
@backup_public_uploads_dir
=
File
.
join
(
backup_dir
,
'public'
,
'uploads'
)
@backup_private_uploads_dir
=
File
.
join
(
backup_dir
,
'uploads'
)
end
end
# Copy uploads from public/uploads to backup/
public/uploads and from /uploads to backup/
uploads
# Copy uploads from public/uploads to backup/uploads
def
dump
def
dump
FileUtils
.
mkdir_p
(
backup_public_uploads_dir
)
FileUtils
.
mkdir_p
(
backup_uploads_dir
)
FileUtils
.
cp_r
(
app_public_uploads_dir
,
backup_public_dir
)
FileUtils
.
cp_r
(
app_uploads_dir
,
backup_dir
)
FileUtils
.
mkdir_p
(
backup_private_uploads_dir
)
FileUtils
.
cp_r
(
app_private_uploads_dir
,
backup_dir
)
end
end
def
restore
def
restore
backup_existing_public_uploads_dir
backup_existing_uploads_dir
backup_existing_private_uploads_dir
FileUtils
.
cp_r
(
backup_public_uploads_dir
,
app_public_uploads_dir
)
FileUtils
.
cp_r
(
backup_uploads_dir
,
app_uploads_dir
)
FileUtils
.
cp_r
(
backup_private_uploads_dir
,
app_private_uploads_dir
)
end
end
def
backup_existing_public_uploads_dir
def
backup_existing_uploads_dir
timestamped_public_uploads_path
=
File
.
join
(
app_public_uploads_dir
,
'..'
,
"uploads.
#{
Time
.
now
.
to_i
}
"
)
timestamped_uploads_path
=
File
.
join
(
app_uploads_dir
,
'..'
,
"uploads.
#{
Time
.
now
.
to_i
}
"
)
if
File
.
exists?
(
app_public_uploads_dir
)
if
File
.
exists?
(
app_uploads_dir
)
FileUtils
.
mv
(
app_public_uploads_dir
,
timestamped_public_uploads_path
)
FileUtils
.
mv
(
app_uploads_dir
,
timestamped_uploads_path
)
end
end
def
backup_existing_private_uploads_dir
timestamped_private_uploads_path
=
File
.
join
(
app_private_uploads_dir
,
'..'
,
"uploads.
#{
Time
.
now
.
to_i
}
"
)
if
File
.
exists?
(
app_private_uploads_dir
)
FileUtils
.
mv
(
app_private_uploads_dir
,
timestamped_private_uploads_path
)
end
end
end
end
end
end
...
...
uploads/.gitkeep
deleted
100644 → 0
View file @
7c3147e6
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