Add initial setup step if the database is empty
This commit is contained in:
parent
f3a1def396
commit
ae4a3c62e4
35
README.md
35
README.md
@ -81,3 +81,38 @@ Funcionalidades que gostaríamos de implementar mas ainda não tivemos tempo:
|
||||
- "Multitenancy", onde uma única instalação do `saucy` permite servir várias
|
||||
instituições;
|
||||
- Melhorias genéricas ao estilo da plataforma.
|
||||
|
||||
|
||||
## Requisitos técnicos
|
||||
|
||||
Para o projecto funcionar a 100%, precisa de algumas dependências externas:
|
||||
|
||||
- Uma base de dados postgresql, onde são armazenados todos os dados;
|
||||
- Configuração de SMTP, para enviar lembretes de pagamentos de quotas e
|
||||
mensagens de recuperação de senha para a administração;
|
||||
- Configuração [ifthenpay](https://www.ifthenpay.com), para suportar pagamentos
|
||||
multibanco/mbway.
|
||||
|
||||
Todas estas coisas são configuráveis via variáveis de ambiente. A lista de
|
||||
variáveis está disponível no ficheiro `env.example`.
|
||||
|
||||
|
||||
## Pôr isto a dar
|
||||
|
||||
Para simplificar a instalação, disponibilizamos uma imagem `docker`:
|
||||
|
||||
```
|
||||
docker pull git.ansol.org/ansol/saucy:latest
|
||||
```
|
||||
|
||||
A imagem está configurada para lançar o servidor web no porto 3000. É
|
||||
recomendado configurar um reverse-proxy, como o nginx ou o apache, à frente
|
||||
deste serviço que trate de fazer o TLS.
|
||||
|
||||
Quando se acede à plataforma pela primeira vez, é-nos pedido um endereço de
|
||||
email para criar a primeira conta de administração. Este endereço precisa de
|
||||
conseguir receber mensagens para o processo de recuperação de senha funcionar.
|
||||
|
||||
Depois deste processo terminado, é possível gerir até 5 contas de
|
||||
administração. Atenção que qualquer uma delas consegue apagar as restantes (e
|
||||
até a si própria).
|
||||
|
@ -1,4 +1,14 @@
|
||||
class ApplicationController < ActionController::Base
|
||||
include Clearance::Controller
|
||||
|
||||
before_action :set_paper_trail_whodunnit
|
||||
before_action :initial_setup_redirect
|
||||
|
||||
def initial_setup_redirect
|
||||
redirect_to '/initial_setup' if requires_initial_setup?
|
||||
end
|
||||
|
||||
def requires_initial_setup?
|
||||
User.count.zero? && Member.unscoped.count.zero?
|
||||
end
|
||||
end
|
||||
|
15
app/controllers/initial_setups_controller.rb
Normal file
15
app/controllers/initial_setups_controller.rb
Normal file
@ -0,0 +1,15 @@
|
||||
class InitialSetupsController < ApplicationController
|
||||
skip_before_action :initial_setup_redirect
|
||||
before_action do
|
||||
redirect_to("/") if !requires_initial_setup?
|
||||
end
|
||||
|
||||
def show
|
||||
end
|
||||
|
||||
def create
|
||||
if User.count.zero?
|
||||
@user = User.create!(email: params[:email], password: SecureRandom.hex(32))
|
||||
end
|
||||
end
|
||||
end
|
8
app/views/initial_setups/create.html.erb
Normal file
8
app/views/initial_setups/create.html.erb
Normal file
@ -0,0 +1,8 @@
|
||||
<h1>Conta de administração criada!</h1>
|
||||
|
||||
<p>
|
||||
Agora que o processo de criação de conta está terminado, basta usar o mecanismo
|
||||
de recuperação de senha para definir uma senha nova:
|
||||
</p>
|
||||
|
||||
<p style="text-align: center;"><%= link_to t('passwords.new.title'), new_password_path %></p>
|
20
app/views/initial_setups/show.html.erb
Normal file
20
app/views/initial_setups/show.html.erb
Normal file
@ -0,0 +1,20 @@
|
||||
<h1>Configurar o saucy</h1>
|
||||
|
||||
<p>
|
||||
Esta instalação do ainda não foi configurada. Para terminar o processo de
|
||||
configuração, é preciso criar uma conta de administração.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Depois deste processo terminado, é possível gerir até 5 contas de
|
||||
administração. Atenção que qualquer uma delas consegue apagar as restantes (e
|
||||
até a si própria).
|
||||
</p>
|
||||
|
||||
<%= form_with(url: initial_setup_path) do |form| %>
|
||||
<p><strong>Qual o endereço de correio electrónico que deve ser usado para criar a conta de administração?</strong></p>
|
||||
<p>O endereço especificado tem de conseguir receber mensagens para o mecanismo de recuperação de senha funcionar.</p>
|
||||
|
||||
<%= form.email_field :email %>
|
||||
<%= form.submit "Configurar" %>
|
||||
<% end %>
|
@ -84,3 +84,5 @@
|
||||
</tr>
|
||||
<% end %>
|
||||
</table>
|
||||
|
||||
<%= link_to "Enviar email de confirmação de inscrição", new_member_message_path(@member, type: :welcome) %>
|
||||
|
@ -31,4 +31,6 @@ Rails.application.routes.draw do
|
||||
|
||||
resource :board, only: [:edit, :update]
|
||||
resource :letters, only: [:create]
|
||||
|
||||
resource :initial_setup, only: [:create, :show]
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user