Adição da função de configuração de email e whatts
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
# Configuração de SMTP e WhatsApp (Twilio) gravada no BANCO, editável pelo ADM
|
||||
# em /admin/configuracao_notificacao — antes disso tudo vinha só do .env e mudar
|
||||
# um servidor de e-mail exigia editar o arquivo no servidor e reiniciar.
|
||||
#
|
||||
# Tabela SINGLETON: uma linha só. `singleton_guard` com índice único é o que
|
||||
# impede dois workers Puma criarem linhas concorrentes no primeiro acesso.
|
||||
#
|
||||
# As credenciais NÃO são importadas do ENV aqui de propósito: os campos nascem
|
||||
# vazios e `smtp_ativo`/`whatsapp_ativo` respeitam as flags antigas, então
|
||||
# `smtp_pronto?`/`whatsapp_pronto?` dão false e o app segue usando o .env
|
||||
# exatamente como hoje até o admin preencher a tela.
|
||||
class CreateConfiguracaoNotificacoes < ActiveRecord::Migration[7.1]
|
||||
def up
|
||||
create_table :configuracao_notificacoes do |t|
|
||||
t.integer :singleton_guard, null: false, default: 0
|
||||
|
||||
# ── E-mail / SMTP ───────────────────────────────────────
|
||||
t.boolean :smtp_ativo, null: false, default: false
|
||||
t.string :smtp_address
|
||||
t.integer :smtp_port, null: false, default: 587
|
||||
t.string :smtp_username
|
||||
t.text :smtp_password_cifrado # AES-256-GCM (concern AtributoCifrado)
|
||||
t.string :smtp_domain
|
||||
t.string :smtp_autenticacao, null: false, default: 'plain'
|
||||
t.string :remetente_email
|
||||
t.string :remetente_nome
|
||||
|
||||
# ── Destinatários administrativos ───────────────────────
|
||||
t.string :email_admin
|
||||
t.string :whatsapp_admin
|
||||
|
||||
# ── Notificação aos motoristas ──────────────────────────
|
||||
t.boolean :email_notificacoes_ativo, null: false, default: false
|
||||
|
||||
# ── WhatsApp / Twilio ───────────────────────────────────
|
||||
t.boolean :whatsapp_ativo, null: false, default: false
|
||||
t.string :twilio_account_sid
|
||||
t.text :twilio_auth_token_cifrado # AES-256-GCM
|
||||
t.string :twilio_from
|
||||
|
||||
t.timestamps
|
||||
end
|
||||
|
||||
add_index :configuracao_notificacoes, :singleton_guard, unique: true
|
||||
|
||||
# Herda as flags que hoje moram em `configuracoes` (chave/valor) e que nunca
|
||||
# tiveram UI. SQL cru de propósito: migration não deve depender de model.
|
||||
whats = select_value("SELECT valor FROM configuracoes WHERE chave = 'notificacao_whatsapp'")
|
||||
email = select_value("SELECT valor FROM configuracoes WHERE chave = 'notificacao_email'")
|
||||
|
||||
execute(<<~SQL.squish)
|
||||
INSERT INTO configuracao_notificacoes
|
||||
(singleton_guard, whatsapp_ativo, email_notificacoes_ativo, smtp_ativo,
|
||||
smtp_port, smtp_autenticacao, created_at, updated_at)
|
||||
VALUES (0, #{whats == 'true'}, #{email == 'true'}, false, 587, 'plain', NOW(), NOW())
|
||||
SQL
|
||||
end
|
||||
|
||||
def down
|
||||
drop_table :configuracao_notificacoes
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user