| 
									
										
										
										
											2016-11-15 16:56:29 +01:00
										 |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-22 16:00:20 +01:00
										 |  |  | class HomeController < ApplicationController | 
					
						
							| 
									
										
										
										
											2020-07-07 15:26:31 +02:00
										 |  |  |   before_action :redirect_unauthenticated_to_permalinks! | 
					
						
							| 
									
										
										
										
											2016-03-06 17:52:23 +01:00
										 |  |  |   before_action :authenticate_user! | 
					
						
							| 
									
										
										
										
											2018-04-17 13:51:01 +02:00
										 |  |  |   before_action :set_referrer_policy_header | 
					
						
							| 
									
										
										
										
											2016-03-06 17:52:23 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-22 16:00:20 +01:00
										 |  |  |   def index | 
					
						
							| 
									
										
										
										
											2017-07-08 14:51:05 +02:00
										 |  |  |     @body_classes = 'app-body' | 
					
						
							| 
									
										
										
										
											2016-08-26 19:12:19 +02:00
										 |  |  |   end | 
					
						
							| 
									
										
										
										
											2016-09-29 21:28:21 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-26 19:12:19 +02:00
										 |  |  |   private | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-07 15:26:31 +02:00
										 |  |  |   def redirect_unauthenticated_to_permalinks! | 
					
						
							| 
									
										
										
										
											2017-09-15 00:57:08 +02:00
										 |  |  |     return if user_signed_in? | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     matches = request.path.match(/\A\/web\/(statuses|accounts)\/([\d]+)\z/) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if matches | 
					
						
							|  |  |  |       case matches[1] | 
					
						
							|  |  |  |       when 'statuses' | 
					
						
							|  |  |  |         status = Status.find_by(id: matches[2]) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-07-08 12:03:45 +02:00
										 |  |  |         if status&.distributable? | 
					
						
							| 
									
										
										
										
											2017-09-15 00:57:08 +02:00
										 |  |  |           redirect_to(ActivityPub::TagManager.instance.url_for(status)) | 
					
						
							|  |  |  |           return | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       when 'accounts' | 
					
						
							|  |  |  |         account = Account.find_by(id: matches[2]) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if account | 
					
						
							|  |  |  |           redirect_to(ActivityPub::TagManager.instance.url_for(account)) | 
					
						
							|  |  |  |           return | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-06 03:29:36 +09:00
										 |  |  |     matches = request.path.match(%r{\A/web/timelines/tag/(?<tag>.+)\z}) | 
					
						
							| 
									
										
										
										
											2020-07-07 15:26:31 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-06 03:29:36 +09:00
										 |  |  |     redirect_to(matches ? tag_path(CGI.unescape(matches[:tag])) : default_redirect_path) | 
					
						
							| 
									
										
										
										
											2016-09-27 23:12:33 +02:00
										 |  |  |   end | 
					
						
							| 
									
										
										
										
											2017-07-08 14:51:05 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-15 00:57:08 +02:00
										 |  |  |   def default_redirect_path | 
					
						
							| 
									
										
										
										
											2019-07-30 11:10:46 +02:00
										 |  |  |     if request.path.start_with?('/web') || whitelist_mode? | 
					
						
							| 
									
										
										
										
											2017-09-15 00:57:08 +02:00
										 |  |  |       new_user_session_path | 
					
						
							|  |  |  |     elsif single_user_mode? | 
					
						
							| 
									
										
										
										
											2019-07-19 01:44:42 +02:00
										 |  |  |       short_account_path(Account.local.without_suspended.where('id > 0').first) | 
					
						
							| 
									
										
										
										
											2017-09-15 00:57:08 +02:00
										 |  |  |     else | 
					
						
							|  |  |  |       about_path | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2018-04-17 13:51:01 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |   def set_referrer_policy_header | 
					
						
							|  |  |  |     response.headers['Referrer-Policy'] = 'origin' | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2016-02-22 16:00:20 +01:00
										 |  |  | end |