about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--app/controllers/application_controller.rb10
-rw-r--r--app/views/errors/404.html (renamed from public/404.html)0
-rw-r--r--app/views/errors/410.html43
-rw-r--r--app/views/errors/422.html43
-rw-r--r--app/views/errors/500.html (renamed from public/500.html)0
5 files changed, 96 insertions, 0 deletions
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index 0a6b50a29..e8cd48b6e 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -11,6 +11,7 @@ class ApplicationController < ActionController::Base
 
   rescue_from ActionController::RoutingError, with: :not_found
   rescue_from ActiveRecord::RecordNotFound, with: :not_found
+  rescue_from ActionController::InvalidAuthenticityToken, with: :unprocessable_entity
 
   before_action :store_current_location, except: :raise_not_found, unless: :devise_controller?
   before_action :set_locale
@@ -50,12 +51,21 @@ class ApplicationController < ActionController::Base
   def not_found
     respond_to do |format|
       format.any  { head 404 }
+      format.html { render "errors/404" }
     end
   end
 
   def gone
     respond_to do |format|
       format.any  { head 410 }
+      format.html { render "errors/410" }
+    end
+  end
+
+  def unprocessable_entity
+    respond_to do |format|
+      format.any  { head 422 }
+      format.html { render "errors/422" }
     end
   end
 
diff --git a/public/404.html b/app/views/errors/404.html
index fc75c78be..fc75c78be 100644
--- a/public/404.html
+++ b/app/views/errors/404.html
diff --git a/app/views/errors/410.html b/app/views/errors/410.html
new file mode 100644
index 000000000..e07cbe863
--- /dev/null
+++ b/app/views/errors/410.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="utf-8">
+  <title>The page you were looking for doesn't exist anymore</title>
+  <meta name="viewport" content="width=device-width,initial-scale=1">
+  <link href="https://fonts.googleapis.com/css?family=Roboto:400" rel="stylesheet">
+  <style>
+    body {
+      font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
+      background: #282c37;
+      color: #9baec8;
+      text-align: center;
+      margin: 0;
+      padding: 20px;
+    }
+
+    .dialog img {
+      display: block;
+      margin: 20px auto;
+      margin-top: 50px;
+      max-width: 600px;
+      width: 100%;
+      height: auto;
+    }
+
+    .dialog h1 {
+      font: 20px/28px -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
+      font-weight: 400;
+    }
+  </style>
+</head>
+
+<body>
+  <div class="dialog">
+    <img src="/oops.png" alt="Mastodon" />
+
+    <div>
+      <h1>The page you were looking for doesn't exist anymore</h1>
+    </div>
+  </div>
+</body>
+</html>
diff --git a/app/views/errors/422.html b/app/views/errors/422.html
new file mode 100644
index 000000000..a214781bd
--- /dev/null
+++ b/app/views/errors/422.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="utf-8">
+  <title>Security verification failed - are you blocking cookies?</title>
+  <meta name="viewport" content="width=device-width,initial-scale=1">
+  <link href="https://fonts.googleapis.com/css?family=Roboto:400" rel="stylesheet">
+  <style>
+    body {
+      font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
+      background: #282c37;
+      color: #9baec8;
+      text-align: center;
+      margin: 0;
+      padding: 20px;
+    }
+
+    .dialog img {
+      display: block;
+      margin: 20px auto;
+      margin-top: 50px;
+      max-width: 600px;
+      width: 100%;
+      height: auto;
+    }
+
+    .dialog h1 {
+      font: 20px/28px -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
+      font-weight: 400;
+    }
+  </style>
+</head>
+
+<body>
+  <div class="dialog">
+    <img src="/oops.png" alt="Mastodon" />
+
+    <div>
+      <h1>We're sorry, but we were unable to verify your request. Have you tried enabling cookies?</h1>
+    </div>
+  </div>
+</body>
+</html>
diff --git a/public/500.html b/app/views/errors/500.html
index d085d490b..d085d490b 100644
--- a/public/500.html
+++ b/app/views/errors/500.html