updated settings templates
This commit is contained in:
@@ -0,0 +1,23 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class ProfileController < ApplicationController
|
||||||
|
def index
|
||||||
|
@user = current_user
|
||||||
|
end
|
||||||
|
|
||||||
|
def update
|
||||||
|
@user = current_user
|
||||||
|
|
||||||
|
if @user.update(user_params)
|
||||||
|
redirect_to settings_profile_path, notice: 'Profile updated'
|
||||||
|
else
|
||||||
|
render :index
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def user_params
|
||||||
|
params.require(:user).permit(:first_name, :last_name)
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -1,48 +1,43 @@
|
|||||||
<div class="max-w-6xl mx-auto">
|
<div class="flex flex-wrap space-y-4 md:flex-nowrap md:space-y-0 md:space-x-16">
|
||||||
<div class="flex">
|
<%= render 'shared/settings_nav' %>
|
||||||
<%= render 'shared/settings_nav' %>
|
<div class="flex-grow max-w-xl">
|
||||||
<div class="mt-4 w-full">
|
<h1 class="text-4xl font-bold mb-4">Email SMTP</h1>
|
||||||
<div class="max-w-xl mx-auto">
|
<p>
|
||||||
<h1 class="text-4xl font-bold mb-4">Email SMTP</h1>
|
Configure your to send emails (TODO)
|
||||||
<p>
|
</p>
|
||||||
Configure your to send emails (TODO)
|
<% value = @encrypted_config.value || {} %>
|
||||||
</p>
|
<%= form_for @encrypted_config, url: settings_email_index_path, method: :post, html: { autocomplete: 'off', class: 'space-y-4' } do |f| %>
|
||||||
<% value = @encrypted_config.value || {} %>
|
<%= f.fields_for :value do |ff| %>
|
||||||
<%= form_for @encrypted_config, url: settings_email_index_path, method: :post, html: { autocomplete: 'off', class: 'space-y-4' } do |f| %>
|
<div class="grid md:grid-cols-2 gap-4">
|
||||||
<%= f.fields_for :value do |ff| %>
|
<div class="form-control">
|
||||||
<div class="grid md:grid-cols-2 gap-4">
|
<%= ff.label :host, class: 'label' %>
|
||||||
<div class="form-control">
|
<%= ff.text_field :host, value: value['host'], required: true, class: 'base-input' %>
|
||||||
<%= ff.label :host, class: 'label' %>
|
|
||||||
<%= ff.text_field :host, value: value['host'], required: true, class: 'base-input' %>
|
|
||||||
</div>
|
|
||||||
<div class="form-control">
|
|
||||||
<%= ff.label :port, class: 'label' %>
|
|
||||||
<%= ff.text_field :port, value: value['port'], required: true, class: 'base-input' %>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="grid md:grid-cols-2 gap-4">
|
|
||||||
<div class="form-control">
|
|
||||||
<%= ff.label :username, class: 'label' %>
|
|
||||||
<%= ff.text_field :username, value: value['username'], required: true, class: 'base-input' %>
|
|
||||||
</div>
|
|
||||||
<div class="form-control">
|
|
||||||
<%= ff.label :password, class: 'label' %>
|
|
||||||
<%= ff.password_field :password, value: value['password'], required: true, class: 'base-input' %>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-control">
|
|
||||||
<%= ff.label :from_email, 'Send from', class: 'label' %>
|
|
||||||
<%= ff.email_field :from_email, value: value['from_email'], required: true, class: 'base-input' %>
|
|
||||||
</div>
|
|
||||||
<% end %>
|
|
||||||
<div>
|
|
||||||
<div class="form-control mt-8">
|
|
||||||
<%= f.button button_title, class: 'base-button' %>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<div class="form-control">
|
||||||
|
<%= ff.label :port, class: 'label' %>
|
||||||
|
<%= ff.text_field :port, value: value['port'], required: true, class: 'base-input' %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="grid md:grid-cols-2 gap-4">
|
||||||
|
<div class="form-control">
|
||||||
|
<%= ff.label :username, class: 'label' %>
|
||||||
|
<%= ff.text_field :username, value: value['username'], required: true, class: 'base-input' %>
|
||||||
|
</div>
|
||||||
|
<div class="form-control">
|
||||||
|
<%= ff.label :password, class: 'label' %>
|
||||||
|
<%= ff.password_field :password, value: value['password'], required: true, class: 'base-input' %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-control">
|
||||||
|
<%= ff.label :from_email, 'Send from', class: 'label' %>
|
||||||
|
<%= ff.email_field :from_email, value: value['from_email'], required: true, class: 'base-input' %>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
<div>
|
||||||
|
<div class="form-control mt-8">
|
||||||
|
<%= f.button button_title, class: 'base-button' %>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<% end %>
|
||||||
<div class="px-2 w-52 flex-none"></div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -27,6 +27,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
<%= yield %>
|
<div class="max-w-6xl mx-auto px-4 md:px-0">
|
||||||
|
<%= yield %>
|
||||||
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
<div class="flex flex-wrap space-y-4 md:flex-nowrap md:space-y-0 md:space-x-16">
|
||||||
|
<%= render 'shared/settings_nav' %>
|
||||||
|
<div class="flex-grow max-w-xl">
|
||||||
|
<h1 class="text-4xl font-bold mb-4">Profile</h1>
|
||||||
|
<%= form_for @user, html: { autocomplete: 'off', class: 'space-y-4' } do |f| %>
|
||||||
|
<div class="grid md:grid-cols-2 gap-4">
|
||||||
|
<div class="form-control">
|
||||||
|
<%= f.label :first_name, class: 'label' %>
|
||||||
|
<%= f.text_field :first_name, required: true, class: 'base-input' %>
|
||||||
|
</div>
|
||||||
|
<div class="form-control">
|
||||||
|
<%= f.label :last_name, class: 'label' %>
|
||||||
|
<%= f.text_field :last_name, required: true, class: 'base-input' %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-control mt-8">
|
||||||
|
<%= f.button button_title, class: 'base-button' %>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
<div class="max-w-6xl mx-auto px-2 py-3 flex items-center justify-between">
|
<div class="max-w-6xl mb-4 mx-auto px-2 py-3 flex items-center justify-between">
|
||||||
<a href="<%= root_path %>" class="text-2xl font-bold">
|
<a href="<%= root_path %>" class="text-2xl font-bold">
|
||||||
<span>DocuSeal</span>
|
<span>DocuSeal</span>
|
||||||
</a>
|
</a>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<menu-active class="block w-52 flex-none">
|
<menu-active class="block w-full md:w-52">
|
||||||
<div class="mt-4 -ml-3.5">
|
<div class="-ml-3.5">
|
||||||
<ul class="menu menu-compact px-2">
|
<ul class="menu menu-compact px-2">
|
||||||
<li class="menu-title"><span>Settings</span></li>
|
<li class="menu-title"><span>Settings</span></li>
|
||||||
<li></li>
|
<li></li>
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
<%= f.fields_for :value do |ff| %>
|
||||||
|
<%= ff.hidden_field :service, value: 'aws_s3' %>
|
||||||
|
<%= ff.fields_for :configs, configs do |fff| %>
|
||||||
|
<div>
|
||||||
|
<%= fff.label :access_key_id, 'Access key ID' %>
|
||||||
|
<%= fff.text_field :access_key_id, value: configs['access_key_id'], required: true %>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<%= fff.label :secret_access_key %>
|
||||||
|
<%= fff.password_field :secret_access_key, value: configs['secret_access_key'], required: true %>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<%= fff.label :region %>
|
||||||
|
<%= fff.text_field :region, value: configs['region'], required: true %>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<%= fff.label :bucket %>
|
||||||
|
<%= fff.text_field :bucket, value: value['service'] == 'aws_s3' ? configs['bucket'] : '', required: true %>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<%= fff.label :endpoint %>
|
||||||
|
<%= fff.text_field :endpoint, value: configs['endpoint'], type: :url %>
|
||||||
|
<small>
|
||||||
|
For AWS S3 compantiable APIs like Minio.
|
||||||
|
</small>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
<% end %>
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
<%= f.fields_for :value do |ff| %>
|
||||||
|
<%= ff.hidden_field :service, value: 'disk' %>
|
||||||
|
<% end %>
|
||||||
|
<div class="text-center max-w-xl mx-auto my-8 text-xl font-medium leading-9">
|
||||||
|
Store all files on disk
|
||||||
|
<br>
|
||||||
|
No configs are needed but make sure your disk is persistent
|
||||||
|
<br>
|
||||||
|
(not suitable for Heroku and other PaaS)
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
<%= f.fields_for :value do |ff| %>
|
||||||
|
<%= ff.hidden_field :service, value: 'google' %>
|
||||||
|
<%= ff.fields_for :configs, configs do |fff| %>
|
||||||
|
<div>
|
||||||
|
<%= fff.label :project, 'Project' %>
|
||||||
|
<%= fff.text_field :project, value: configs['project'], required: true %>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<%= fff.label :bucket %>
|
||||||
|
<%= fff.text_field :bucket, value: value['service'] == 'google' ? configs['bucket'] : '', required: true %>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<%= fff.label :credentials, 'Credentials (JSON key content)' %>
|
||||||
|
<%= fff.text_area :credentials, value: configs['credentials'], required: true %>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
<% end %>
|
||||||
@@ -1,8 +1,6 @@
|
|||||||
<div class="max-w-6xl mx-auto">
|
<div class="flex flex-wrap space-y-4 md:flex-nowrap md:space-y-0 md:space-x-16">
|
||||||
<div class="flex">
|
<%= render 'shared/settings_nav' %>
|
||||||
<%= render 'shared/settings_nav' %>
|
<div class="flex-grow max-w-xl">
|
||||||
<div class="mt-4 w-full">
|
|
||||||
<div class="max-w-xl mx-auto">
|
|
||||||
<h1 class="text-4xl font-bold mb-4">Storage</h1>
|
<h1 class="text-4xl font-bold mb-4">Storage</h1>
|
||||||
<p class="mb-4">
|
<p class="mb-4">
|
||||||
Select files torage option (TODO)
|
Select files torage option (TODO)
|
||||||
@@ -22,72 +20,17 @@
|
|||||||
</div>
|
</div>
|
||||||
</toggle-visible>
|
</toggle-visible>
|
||||||
<disable-hidden id="disk" class="<%= 'hidden' if value['service'] != 'disk' %>">
|
<disable-hidden id="disk" class="<%= 'hidden' if value['service'] != 'disk' %>">
|
||||||
<%= f.fields_for :value do |ff| %>
|
<%= render "disk_form", f: f %>
|
||||||
<%= ff.hidden_field :service, value: 'disk' %>
|
|
||||||
<% end %>
|
|
||||||
<div class="text-center max-w-xl mx-auto my-8 text-xl font-medium leading-9">
|
|
||||||
Store all files on disk
|
|
||||||
<br>
|
|
||||||
No configs are needed but make sure your disk is persistent
|
|
||||||
<br>
|
|
||||||
(not suitable for Heroku and other PaaS)
|
|
||||||
</div>
|
|
||||||
</disable-hidden>
|
</disable-hidden>
|
||||||
<disable-hidden id="aws_s3" class="<%= 'hidden' if value['service'] != 'aws_s3' %>">
|
<disable-hidden id="aws_s3" class="<%= 'hidden' if value['service'] != 'aws_s3' %>">
|
||||||
<%= f.fields_for :value do |ff| %>
|
<%= render "aws_form", f: f, configs: configs, value: value %>
|
||||||
<%= ff.hidden_field :service, value: 'aws_s3' %>
|
|
||||||
<%= ff.fields_for :configs, configs do |fff| %>
|
|
||||||
<div>
|
|
||||||
<%= fff.label :access_key_id, 'Access key ID' %>
|
|
||||||
<%= fff.text_field :access_key_id, value: configs['access_key_id'], required: true %>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<%= fff.label :secret_access_key %>
|
|
||||||
<%= fff.password_field :secret_access_key, value: configs['secret_access_key'], required: true %>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<%= fff.label :region %>
|
|
||||||
<%= fff.text_field :region, value: configs['region'], required: true %>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<%= fff.label :bucket %>
|
|
||||||
<%= fff.text_field :bucket, value: value['service'] == 'aws_s3' ? configs['bucket'] : '', required: true %>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<%= fff.label :endpoint %>
|
|
||||||
<%= fff.text_field :endpoint, value: configs['endpoint'], type: :url %>
|
|
||||||
<small>
|
|
||||||
For AWS S3 compantiable APIs like Minio.
|
|
||||||
</small>
|
|
||||||
</div>
|
|
||||||
<% end %>
|
|
||||||
<% end %>
|
|
||||||
</disable-hidden>
|
</disable-hidden>
|
||||||
<disable-hidden id="google" class="<%= 'hidden' if value['service'] != 'google' %>">
|
<disable-hidden id="google" class="<%= 'hidden' if value['service'] != 'google' %>">
|
||||||
<%= f.fields_for :value do |ff| %>
|
<%= render "google_cloud", f: f, configs: configs, value: value %>
|
||||||
<%= ff.hidden_field :service, value: 'google' %>
|
|
||||||
<%= ff.fields_for :configs, configs do |fff| %>
|
|
||||||
<div>
|
|
||||||
<%= fff.label :project, 'Project' %>
|
|
||||||
<%= fff.text_field :project, value: configs['project'], required: true %>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<%= fff.label :bucket %>
|
|
||||||
<%= fff.text_field :bucket, value: value['service'] == 'google' ? configs['bucket'] : '', required: true %>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<%= fff.label :credentials, 'Credentials (JSON key content)' %>
|
|
||||||
<%= fff.text_area :credentials, value: configs['credentials'], required: true %>
|
|
||||||
</div>
|
|
||||||
<% end %>
|
|
||||||
<% end %>
|
|
||||||
</disable-hidden>
|
</disable-hidden>
|
||||||
<div class="form-control">
|
<div class="form-control">
|
||||||
<%= f.button button_title('OK'), class: 'base-button' %>
|
<%= f.button button_title('OK'), class: 'base-button' %>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
<div class="px-2 w-52 flex-none"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
<div class="max-w-6xl mx-auto">
|
<div class="flex flex-wrap space-y-4 md:flex-nowrap md:space-y-0 md:space-x-16">
|
||||||
<div class="flex space-x-2">
|
|
||||||
<%= render 'shared/settings_nav' %>
|
<%= render 'shared/settings_nav' %>
|
||||||
<div class="mt-4 w-full px-2">
|
<div class="w-full">
|
||||||
<div class="flex justify-between mb-4">
|
<div class="flex justify-between mb-4">
|
||||||
<h1 class="text-4xl font-bold">Users</h1>
|
<h1 class="text-4xl font-bold">Team</h1>
|
||||||
<%= link_to new_user_path, class: 'btn btn-primary btn-md gap-2', data: { turbo_frame: 'modal' } do %>
|
<%= link_to new_user_path, class: 'btn btn-primary btn-md gap-2', data: { turbo_frame: 'modal' } do %>
|
||||||
<svg
|
<svg
|
||||||
class="w-6 h-6"
|
class="w-6 h-6"
|
||||||
@@ -87,4 +86,3 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|||||||
+1
-1
@@ -55,7 +55,7 @@ Rails.application.routes.draw do
|
|||||||
resources :storage, only: %i[index create], controller: 'storage_settings'
|
resources :storage, only: %i[index create], controller: 'storage_settings'
|
||||||
resources :email, only: %i[index create], controller: 'email_settings'
|
resources :email, only: %i[index create], controller: 'email_settings'
|
||||||
resources :esign, only: %i[index create], controller: 'esign_settings'
|
resources :esign, only: %i[index create], controller: 'esign_settings'
|
||||||
resources :profile, only: %i[index create]
|
resources :profile, only: %i[index update]
|
||||||
resources :users, only: %i[index]
|
resources :users, only: %i[index]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user