Files
ubicloud/views/layouts/app.erb
Jeremy Evans b780fb582e Support connecting and disconnecting OIDC authentication support for accounts
This is based on the existing support for connecting social logins
to accounts.  Connecting needs to be handled differently, since
we don't want to show all accounts every OIDC provider that is
supported (OIDC providers should be considered internal).

As OIDC providers are named with the OidcProvider ubid, add
omniauth_provider_name helper method that returns the display name
for the provider, and use that in the flash messages.

This makes a change to the layout so it will use the @page_message
style page if logged in and @use_page_message is set. I'm not sure
whether @page_message is already used on any page shown when logged
in.  If not, we could probably remove @use_page_message and have
the presence of @page_message trigger the alternative layout.
2025-07-08 00:10:06 +09:00

125 lines
4.6 KiB
Plaintext

<!DOCTYPE html>
<html class="h-full bg-gray-50">
<head>
<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
<link rel="icon" href="/favicon.ico" type="image/x-icon">
<title><%= ["Ubicloud", @page_title].compact.join(" - ") %></title>
<%== assets(:css) %>
<script
src="https://cdn.jsdelivr.net/npm/jquery@3.7.0/dist/jquery.min.js"
integrity="sha256-2Pmvv0kuTBOenSvLm6bvfBSSHrUJ+3A7x6P5Ebd07/g="
crossorigin="anonymous"
></script>
<script
src="https://cdn.jsdelivr.net/npm/dompurify@3.0.5/dist/purify.min.js"
integrity="sha256-QigBQMy2be3IqJD2ezKJUJ5gycSmyYlRHj2VGBuITpU="
crossorigin="anonymous"
></script>
<% if @enable_datepicker %>
<link
rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/flatpickr@4.6.13/dist/flatpickr.min.css"
integrity="sha256-GzSkJVLJbxDk36qko2cnawOGiqz/Y8GsQv/jMTUrx1Q="
crossorigin="anonymous"
>
<script
src="https://cdn.jsdelivr.net/npm/flatpickr@4.6.13/dist/flatpickr.min.js"
integrity="sha256-Huqxy3eUcaCwqqk92RwusapTfWlvAasF6p2rxV6FJaE="
crossorigin="anonymous"
></script>
<% end %>
<% if @enable_cloudflare_turnstile %>
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" defer></script>
<% end %>
<% if @enable_marked %>
<script
src="https://cdn.jsdelivr.net/npm/marked@15.0.5/marked.min.js"
integrity="sha256-1Yrhpf0RL7M7U0N9wP74sARr2/obHqHIdQ6iGVTve+s="
crossorigin="anonymous"
></script>
<% end %>
<% if @enable_echarts %>
<script
src="https://cdn.jsdelivr.net/npm/echarts@5.6.0/dist/echarts.min.js"
integrity="sha256-v0oiNSTkC3fDBL7GfhIiz1UfFIgM9Cxp3ARlWOEcB7E="
crossorigin="anonymous"
>
</script>
<% end %>
</head>
<body class="h-full">
<% if rodauth.authenticated? && !@use_page_message %>
<div>
<%== render("layouts/sidebar/desktop") %>
<%== render("layouts/sidebar/mobile") %>
<div class="lg:pl-72">
<%== render("layouts/topbar") %>
<main class="py-10">
<div class="px-4 sm:px-6 lg:px-8">
<div class="px-2 sm:px-3 lg:px-4">
<%== render("components/flash_message") %>
<%== yield %>
</div>
</div>
</main>
</div>
</div>
<%== render("layouts/notifications") %>
<% elsif @error %>
<%== yield %>
<% else %>
<div class="flex min-h-full flex-col justify-center py-12 sm:px-6 lg:px-8">
<div class="sm:mx-auto sm:w-full sm:max-w-md">
<div class="flex shrink-0 items-center px-10 py-4">
<img class="" src="/logo-primary.png" alt="Ubicloud">
</div>
<h2 class="mt-6 text-center text-3xl font-bold tracking-tight text-gray-900"><%= @page_message %></h2>
</div>
<div class="mt-8 sm:mx-auto sm:w-full sm:max-w-md">
<div class="bg-white px-4 py-8 shadow sm:rounded-lg sm:px-10">
<div class="pt-4 empty:hidden"><%== render("components/flash_message") %></div>
<%== yield %>
</div>
</div>
<div class="mt-10 flex justify-center space-x-5">
<a href="https://github.com/ubicloud/ubicloud" target="_blank" class="text-gray-400 hover:text-gray-500">
<span class="sr-only">GitHub</span>
<%== part("components/icon", name: "github") %>
</a>
<a href="mailto:support@ubicloud.com" class="text-gray-400 hover:text-gray-500">
<span class="sr-only">Support</span>
<%== part("components/icon", name: "hero-envelope") %>
</a>
</div>
<% if Config.managed_service %>
<div class="text-sm text-gray-500 text-center mt-10 w-full">
By using Ubicloud console you agree to our
<a
href="https://www.ubicloud.com/docs/about/terms-of-service"
class="font-medium text-orange-500 hover:text-orange-600"
target="_blank"
>
terms of service
</a>
and
<a
href="https://www.ubicloud.com/docs/about/privacy-policy"
class="font-medium text-orange-500 hover:text-orange-600"
target="_blank"
>
privacy policy
</a>
</div>
<% end %>
</div>
<% end %>
<%== assets(:js) %>
</body>
</html>