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
|
- "Multitenancy", onde uma única instalação do `saucy` permite servir várias
|
||||||
instituições;
|
instituições;
|
||||||
- Melhorias genéricas ao estilo da plataforma.
|
- 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
|
class ApplicationController < ActionController::Base
|
||||||
include Clearance::Controller
|
include Clearance::Controller
|
||||||
|
|
||||||
before_action :set_paper_trail_whodunnit
|
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
|
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>
|
</tr>
|
||||||
<% end %>
|
<% end %>
|
||||||
</table>
|
</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 :board, only: [:edit, :update]
|
||||||
resource :letters, only: [:create]
|
resource :letters, only: [:create]
|
||||||
|
|
||||||
|
resource :initial_setup, only: [:create, :show]
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user