Spaces:
Paused
Paused
| class HomeController < ApplicationController | |
| skip_forgery_protection only: %i[service_worker] | |
| def index | |
| @courses = current_school.courses.where(featured: true) | |
| render layout: "student" | |
| end | |
| # GET /styleguide | |
| def styleguide | |
| # noop | |
| end | |
| # GET /agreements/:agreement_type | |
| def agreement | |
| klass = | |
| case params[:agreement_type] | |
| when "privacy-policy" | |
| SchoolString::PrivacyPolicy | |
| when "terms-and-conditions" | |
| SchoolString::TermsAndConditions | |
| when "code-of-conduct" | |
| SchoolString::CodeOfConduct | |
| else | |
| raise_not_found | |
| end | |
| @agreement_text = klass.for(current_school) | |
| raise_not_found if @agreement_text.blank? | |
| @agreement_type = | |
| case klass.name.demodulize.titleize | |
| when "Privacy Policy" | |
| t(".privacy_policy") | |
| when "Terms and Conditions" | |
| t(".terms_and_conditions") | |
| when "Code of Conduct" | |
| t("shared.code_of_conduct") | |
| end | |
| render layout: "student" | |
| end | |
| # GET /oauth/:provider?fqdn=FQDN&referrer= | |
| def oauth | |
| # Disallow routing OAuth results to unknown domains. | |
| if Domain.find_by(fqdn: params[:fqdn]).blank? || params[:session_id].blank? | |
| raise_not_found | |
| end | |
| set_cookie( | |
| :oauth_origin, | |
| { | |
| provider: params[:provider], | |
| fqdn: params[:fqdn], | |
| session_id: params[:session_id], | |
| link_data: params[:link_data] | |
| }.to_json | |
| ) | |
| redirect_to OmniauthProviderUrlService.new( | |
| params[:provider], | |
| current_host | |
| ).oauth_url | |
| end | |
| # GET /oauth_error?error= | |
| def oauth_error | |
| flash[:notice] = params[:error] | |
| redirect_to new_user_session_path | |
| end | |
| # GET /favicon.ico | |
| def favicon | |
| if current_school.present? && current_school.icon_on_light_bg.attached? | |
| redirect_to( | |
| view_context.rails_public_blob_url(current_school.icon_variant(:thumb)), | |
| allow_other_host: true | |
| ) | |
| else | |
| redirect_to "/favicon.png" | |
| end | |
| end | |
| # GET /service-worker.js | |
| def service_worker | |
| render layout: false, content_type: "text/javascript" | |
| end | |
| # GET /manifest.json | |
| def manifest | |
| render json: GenerateManifestService.new(current_school).json, | |
| content_type: "application/json" | |
| end | |
| # GET /offline | |
| def offline | |
| render layout: false | |
| end | |
| protected | |
| def background_image_number | |
| @background_image_number ||= | |
| begin | |
| session[:background_image_number] ||= rand(1..4) | |
| session[:background_image_number] += 1 | |
| session[:background_image_number] = 1 if session[ | |
| :background_image_number | |
| ] > 4 | |
| session[:background_image_number] | |
| end | |
| end | |
| def hero_text_alignment | |
| @hero_text_alignment ||= | |
| begin | |
| { 1 => "center", 2 => "right", 3 => "right", 4 => "right" }[ | |
| background_image_number | |
| ] | |
| end | |
| end | |
| helper_method :background_image_number | |
| helper_method :hero_text_alignment | |
| end | |