updated settings templates

pull/105/head
Alex Turchyn 2 years ago
parent 4a303cb423
commit 97a712d888

@ -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">
<%= render 'shared/settings_nav' %>
<div class="mt-4 w-full">
<div class="max-w-xl mx-auto">
<h1 class="text-4xl font-bold mb-4">Email SMTP</h1>
<p>
Configure your to send emails (TODO)
</p>
<% value = @encrypted_config.value || {} %>
<%= form_for @encrypted_config, url: settings_email_index_path, method: :post, html: { autocomplete: 'off', class: 'space-y-4' } do |f| %>
<%= f.fields_for :value do |ff| %>
<div class="grid md:grid-cols-2 gap-4">
<div class="form-control">
<%= 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 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">Email SMTP</h1>
<p>
Configure your to send emails (TODO)
</p>
<% value = @encrypted_config.value || {} %>
<%= form_for @encrypted_config, url: settings_email_index_path, method: :post, html: { autocomplete: 'off', class: 'space-y-4' } do |f| %>
<%= f.fields_for :value do |ff| %>
<div class="grid md:grid-cols-2 gap-4">
<div class="form-control">
<%= ff.label :host, class: 'label' %>
<%= ff.text_field :host, value: value['host'], required: true, class: 'base-input' %>
</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 class="px-2 w-52 flex-none"></div>
<% end %>
</div>
</div>

@ -27,6 +27,8 @@
</div>
</div>
<% end %>
<%= yield %>
<div class="max-w-6xl mx-auto px-4 md:px-0">
<%= yield %>
</div>
</body>
</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">
<span>DocuSeal</span>
</a>

@ -1,5 +1,5 @@
<menu-active class="block w-52 flex-none">
<div class="mt-4 -ml-3.5">
<menu-active class="block w-full md:w-52">
<div class="-ml-3.5">
<ul class="menu menu-compact px-2">
<li class="menu-title"><span>Settings</span></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">
<%= render 'shared/settings_nav' %>
<div class="mt-4 w-full">
<div class="max-w-xl mx-auto">
<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">Storage</h1>
<p class="mb-4">
Select files torage option (TODO)
@ -22,72 +20,17 @@
</div>
</toggle-visible>
<disable-hidden id="disk" class="<%= 'hidden' if value['service'] != 'disk' %>">
<%= 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>
<%= render "disk_form", f: f %>
</disable-hidden>
<disable-hidden id="aws_s3" class="<%= 'hidden' if value['service'] != 'aws_s3' %>">
<%= 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 %>
<%= render "aws_form", f: f, configs: configs, value: value %>
</disable-hidden>
<disable-hidden id="google" class="<%= 'hidden' if value['service'] != 'google' %>">
<%= 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 %>
<%= render "google_cloud", f: f, configs: configs, value: value %>
</disable-hidden>
<div class="form-control">
<%= f.button button_title('OK'), class: 'base-button' %>
</div>
<% end %>
</div>
</div>
<div class="px-2 w-52 flex-none"></div>
</div>
</div>

@ -1,9 +1,8 @@
<div class="max-w-6xl mx-auto">
<div class="flex space-x-2">
<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="mt-4 w-full px-2">
<div class="w-full">
<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 %>
<svg
class="w-6 h-6"
@ -87,4 +86,3 @@
</div>
</div>
</div>
</div>

@ -55,7 +55,7 @@ Rails.application.routes.draw do
resources :storage, only: %i[index create], controller: 'storage_settings'
resources :email, only: %i[index create], controller: 'email_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]
end
end

Loading…
Cancel
Save