Add db/user seeds

This commit is contained in:
Râu Cao 2022-12-07 18:12:54 +01:00
parent 3b51670850
commit ba7b10fbc8
Signed by: raucao
GPG Key ID: 15E65F399D084BA9
5 changed files with 33 additions and 7 deletions

View File

@ -59,6 +59,7 @@ group :development do
gem 'listen', '~> 3.2' gem 'listen', '~> 3.2'
gem 'letter_opener' gem 'letter_opener'
gem 'letter_opener_web' gem 'letter_opener_web'
gem 'faker'
end end
group :test do group :test do

View File

@ -117,6 +117,8 @@ GEM
factory_bot_rails (6.2.0) factory_bot_rails (6.2.0)
factory_bot (~> 6.2.0) factory_bot (~> 6.2.0)
railties (>= 5.0.0) railties (>= 5.0.0)
faker (3.0.0)
i18n (>= 1.8.11, < 2)
faraday (2.7.1) faraday (2.7.1)
faraday-net_http (>= 2.0, < 3.1) faraday-net_http (>= 2.0, < 3.1)
ruby2_keywords (>= 0.0.4) ruby2_keywords (>= 0.0.4)
@ -313,6 +315,7 @@ DEPENDENCIES
devise_ldap_authenticatable devise_ldap_authenticatable
dotenv-rails dotenv-rails
factory_bot_rails factory_bot_rails
faker
faraday faraday
importmap-rails importmap-rails
jbuilder (~> 2.7) jbuilder (~> 2.7)

View File

@ -37,6 +37,7 @@ class CreateAccount < ApplicationService
end end
# TODO move to confirmation # TODO move to confirmation
# (and/or add email_confirmed to entry and use in login filter)
def add_ldap_document def add_ldap_document
hashed_pw = Devise.ldap_auth_password_builder.call(@password) hashed_pw = Devise.ldap_auth_password_builder.call(@password)
CreateLdapUserJob.perform_later(@username, @domain, @email, hashed_pw) CreateLdapUserJob.perform_later(@username, @domain, @email, hashed_pw)
@ -49,6 +50,8 @@ class CreateAccount < ApplicationService
end end
def create_lndhub_wallet(user) def create_lndhub_wallet(user)
#TODO enable in development when we have a local lndhub (mock?) API
return if Rails.env.development?
CreateLndhubWalletJob.perform_later(user) CreateLndhubWalletJob.perform_later(user)
end end
end end

View File

@ -10,6 +10,10 @@ class LdapService < ApplicationService
res res
end end
def add_attribute(dn, attr, value)
ldap_client.add_attribute dn, attr, value
end
def delete_entry(dn, interactive=false) def delete_entry(dn, interactive=false)
puts "Deleting entry: #{dn}" if interactive puts "Deleting entry: #{dn}" if interactive
res = ldap_client.delete dn: dn res = ldap_client.delete dn: dn

View File

@ -1,7 +1,22 @@
# This file should contain all the record creation needed to seed the database with its default values. require 'sidekiq/testing'
# The data can then be loaded with the rails db:seed command (or created alongside the database with db:setup).
# ldap = LdapService.new
# Examples:
# Sidekiq::Testing.inline! do
# movies = Movie.create([{ name: 'Star Wars' }, { name: 'Lord of the Rings' }]) CreateAccount.call(
# Character.create(name: 'Luke', movie: movies.first) username: "admin", domain: "kosmos.org", email: "admin@example.com",
password: "admin is admin", confirmed: true
)
ldap.add_attribute "cn=admin,ou=kosmos.org,cn=users,dc=kosmos,dc=org", :admin, "true"
5.times do |n|
username = Faker::Name.unique.first_name.downcase
email = Faker::Internet.unique.email
CreateAccount.call(
username: username, domain: "kosmos.org", email: email,
password: "user is user", confirmed: true
)
end
end