@@ -4,11 +4,12 @@ module Onlyoffice
44 module ControllerExtensions
55 def convert
66 begin
7- service = Onlyoffice ::ConversionService . new (
8- upload_short_url : params [ :upload_short_url ] ,
9- target_format : params [ :target_format ]
10- )
11-
7+ service =
8+ Onlyoffice ::ConversionService . new (
9+ upload_short_url : params [ :upload_short_url ] ,
10+ target_format : params [ :target_format ] ,
11+ )
12+
1213 result = service . convert
1314 render json : result
1415 rescue => e
@@ -18,16 +19,18 @@ def convert
1819
1920 def upload_info
2021 upload_short_url = params [ :id ]
21-
22+
2223 upload = nil
23- PrettyText ::Helpers . lookup_upload_urls ( [ upload_short_url ] ) . each do |short_url , paths |
24- if paths [ :base62_sha1 ]
25- sha1 = Upload . sha1_from_base62_encoded ( paths [ :base62_sha1 ] )
26- upload = Upload . find_by ( sha1 : sha1 )
27- elsif paths [ :sha1 ]
28- upload = Upload . find_by ( sha1 : paths [ :sha1 ] )
24+ PrettyText ::Helpers
25+ . lookup_upload_urls ( [ upload_short_url ] )
26+ . each do |short_url , paths |
27+ if paths [ :base62_sha1 ]
28+ sha1 = Upload . sha1_from_base62_encoded ( paths [ :base62_sha1 ] )
29+ upload = Upload . find_by ( sha1 : sha1 )
30+ elsif paths [ :sha1 ]
31+ upload = Upload . find_by ( sha1 : paths [ :sha1 ] )
32+ end
2933 end
30- end
3134
3235 if upload
3336 render json : { upload_id : upload . id , user_id : upload . user_id }
@@ -39,63 +42,79 @@ def upload_info
3942 def list_permissions
4043 upload = find_upload_by_short_url ( params [ :id ] )
4144 return render json : { error : "Upload not found" } , status : :not_found unless upload
42- return render json : { error : "Access denied" } , status : :forbidden unless can_manage_permissions? ( upload )
45+ unless can_manage_permissions? ( upload )
46+ return render json : { error : "Access denied" } , status : :forbidden
47+ end
4348
4449 permissions = Onlyoffice ::Permission . where ( upload_id : upload . id ) . includes ( :user )
45-
50+
4651 render json : {
47- permissions : permissions . map do |p |
48- {
49- id : p . id ,
50- user : {
51- id : p . user . id ,
52- username : p . user . username ,
53- name : p . user . name ,
54- avatar_template : p . user . avatar_template
55- } ,
56- permission_type : p . permission_type
57- }
58- end
59- }
52+ permissions :
53+ permissions . map do |p |
54+ {
55+ id : p . id ,
56+ user : {
57+ id : p . user . id ,
58+ username : p . user . username ,
59+ name : p . user . name ,
60+ avatar_template : p . user . avatar_template ,
61+ } ,
62+ permission_type : p . permission_type ,
63+ }
64+ end ,
65+ }
6066 end
6167
6268 def create_permission
6369 upload = find_upload_by_short_url ( params [ :id ] )
6470 return render json : { error : "Upload not found" } , status : :not_found unless upload
65- return render json : { error : "Access denied" } , status : :forbidden unless can_manage_permissions? ( upload )
71+ unless can_manage_permissions? ( upload )
72+ return render json : { error : "Access denied" } , status : :forbidden
73+ end
6674
67- permission = Onlyoffice ::Permission . new (
68- upload_id : upload . id ,
69- user_id : params [ :user_id ] ,
70- permission_type : params [ :permission_type ]
71- )
75+ permission =
76+ Onlyoffice ::Permission . new (
77+ upload_id : upload . id ,
78+ user_id : params [ :user_id ] ,
79+ permission_type : params [ :permission_type ] ,
80+ )
7281
7382 if permission . save
7483 render json : { success : true }
7584 else
76- render json : { error : permission . errors . full_messages . join ( ", " ) } , status : :unprocessable_entity
85+ render json : {
86+ error : permission . errors . full_messages . join ( ", " ) ,
87+ } ,
88+ status : :unprocessable_entity
7789 end
7890 end
7991
8092 def update_permission
8193 upload = find_upload_by_short_url ( params [ :id ] )
8294 return render json : { error : "Upload not found" } , status : :not_found unless upload
83- return render json : { error : "Access denied" } , status : :forbidden unless can_manage_permissions? ( upload )
95+ unless can_manage_permissions? ( upload )
96+ return render json : { error : "Access denied" } , status : :forbidden
97+ end
8498
8599 permission = Onlyoffice ::Permission . find_by ( id : params [ :permission_id ] , upload_id : upload . id )
86100 return render json : { error : "Permission not found" } , status : :not_found unless permission
87101
88102 if permission . update ( permission_type : params [ :permission_type ] )
89103 render json : { success : true }
90104 else
91- render json : { error : permission . errors . full_messages . join ( ", " ) } , status : :unprocessable_entity
105+ render json : {
106+ error : permission . errors . full_messages . join ( ", " ) ,
107+ } ,
108+ status : :unprocessable_entity
92109 end
93110 end
94111
95112 def delete_permission
96113 upload = find_upload_by_short_url ( params [ :id ] )
97114 return render json : { error : "Upload not found" } , status : :not_found unless upload
98- return render json : { error : "Access denied" } , status : :forbidden unless can_manage_permissions? ( upload )
115+ unless can_manage_permissions? ( upload )
116+ return render json : { error : "Access denied" } , status : :forbidden
117+ end
99118
100119 permission = Onlyoffice ::Permission . find_by ( id : params [ :permission_id ] , upload_id : upload . id )
101120 return render json : { error : "Permission not found" } , status : :not_found unless permission
@@ -111,43 +130,45 @@ def delete_permission
111130
112131 def find_upload_by_short_url ( short_url )
113132 upload = nil
114- PrettyText ::Helpers . lookup_upload_urls ( [ short_url ] ) . each do |_ , paths |
115- if paths [ :base62_sha1 ]
116- sha1 = Upload . sha1_from_base62_encoded ( paths [ :base62_sha1 ] )
117- upload = Upload . find_by ( sha1 : sha1 )
118- elsif paths [ :sha1 ]
119- upload = Upload . find_by ( sha1 : paths [ :sha1 ] )
133+ PrettyText ::Helpers
134+ . lookup_upload_urls ( [ short_url ] )
135+ . each do |_ , paths |
136+ if paths [ :base62_sha1 ]
137+ sha1 = Upload . sha1_from_base62_encoded ( paths [ :base62_sha1 ] )
138+ upload = Upload . find_by ( sha1 : sha1 )
139+ elsif paths [ :sha1 ]
140+ upload = Upload . find_by ( sha1 : paths [ :sha1 ] )
141+ end
120142 end
121- end
122143 upload
123144 end
124145
125146 def check_user_permission ( upload , user )
126- return ' editor' unless upload
127-
147+ return " editor" unless upload
148+
128149 # Owner always has editor rights
129- return ' editor' if upload . user_id == user . id
130-
150+ return " editor" if upload . user_id == user . id
151+
131152 # Check explicit permissions set by owner
132153 permission = Onlyoffice ::Permission . find_by ( upload_id : upload . id , user_id : user . id )
133154 return permission . permission_type if permission
134-
155+
135156 # Everyone else (including staff) gets viewer by default
136- ' viewer'
157+ " viewer"
137158 end
138159
139160 def can_manage_permissions? ( upload )
140161 return false unless current_user
141-
162+
142163 # Check if user is post author (if post_id provided)
143164 if params [ :post_id ] . present?
144165 post = Post . find_by ( id : params [ :post_id ] )
145166 return true if post && post . user_id == current_user . id
146167 end
147-
168+
148169 # Only upload owner can manage permissions
149170 return true if upload . user_id == current_user . id
150-
171+
151172 false
152173 end
153174 end
0 commit comments