at master 3.3 kB view raw
1alias Domain.{Repo, Accounts, Auth, Actors, Tokens} 2 3mappings = case File.read("provision-uuids.json") do 4{:ok, content} -> 5 case Jason.decode(content) do 6 {:ok, mapping} -> mapping 7 _ -> %{"accounts" => %{}} 8 end 9_ -> %{"accounts" => %{}} 10end 11 12IO.puts("INFO: Fetching account") 13{:ok, account} = Accounts.fetch_account_by_id_or_slug("main") 14 15IO.puts("INFO: Fetching email provider") 16{:ok, email_provider} = Auth.Provider.Query.not_disabled() 17 |> Auth.Provider.Query.by_adapter(:email) 18 |> Auth.Provider.Query.by_account_id(account.id) 19 |> Repo.fetch(Auth.Provider.Query, []) 20 21temp_admin_actor_email = "firezone-provision@localhost.local" 22temp_admin_actor_context = %Auth.Context{ 23 type: :browser, 24 user_agent: "Unspecified/0.0", 25 remote_ip: {127, 0, 0, 1}, 26 remote_ip_location_region: "N/A", 27 remote_ip_location_city: "N/A", 28 remote_ip_location_lat: 0.0, 29 remote_ip_location_lon: 0.0 30} 31 32{:ok, temp_admin_actor} = 33 Actors.create_actor(account, %{ 34 type: :account_admin_user, 35 name: "Token Provisioning" 36 }) 37 38{:ok, temp_admin_actor_email_identity} = 39 Auth.create_identity(temp_admin_actor, email_provider, %{ 40 provider_identifier: temp_admin_actor_email, 41 provider_identifier_confirmation: temp_admin_actor_email 42 }) 43 44{:ok, temp_admin_actor_token} = 45 Auth.create_token(temp_admin_actor_email_identity, temp_admin_actor_context, "temporarynonce", DateTime.utc_now() |> DateTime.add(1, :hour)) 46 47{:ok, temp_admin_subject} = 48 Auth.build_subject(temp_admin_actor_token, temp_admin_actor_context) 49 50{:ok, relay_group_token} = 51 Tokens.create_token(%{ 52 "type" => :relay_group, 53 "expires_at" => DateTime.utc_now() |> DateTime.add(1, :hour), 54 "secret_fragment" => Domain.Crypto.random_token(32, encoder: :hex32), 55 "relay_group_id" => get_in(mappings, ["accounts", "main", "relay_groups", "my-relays"]) 56 }) 57 58relay_group_encoded_token = Tokens.encode_fragment!(relay_group_token) 59IO.puts("Created relay token: #{relay_group_encoded_token}") 60File.write("relay_token.txt", relay_group_encoded_token) 61 62{:ok, gateway_group_token} = 63 Tokens.create_token(%{ 64 "type" => :gateway_group, 65 "expires_at" => DateTime.utc_now() |> DateTime.add(1, :hour), 66 "secret_fragment" => Domain.Crypto.random_token(32, encoder: :hex32), 67 "account_id" => get_in(mappings, ["accounts", "main", "id"]), 68 "gateway_group_id" => get_in(mappings, ["accounts", "main", "gateway_groups", "site"]) 69 }, temp_admin_subject) 70 71gateway_group_encoded_token = Tokens.encode_fragment!(gateway_group_token) 72IO.puts("Created gateway group token: #{gateway_group_encoded_token}") 73File.write("gateway_token.txt", gateway_group_encoded_token) 74 75{:ok, service_account_actor_token} = 76 Tokens.create_token(%{ 77 "type" => :client, 78 "expires_at" => DateTime.utc_now() |> DateTime.add(1, :hour), 79 "secret_fragment" => Domain.Crypto.random_token(32, encoder: :hex32), 80 "account_id" => get_in(mappings, ["accounts", "main", "id"]), 81 "actor_id" => get_in(mappings, ["accounts", "main", "actors", "client"]) 82 }) 83 84service_account_actor_encoded_token = Tokens.encode_fragment!(service_account_actor_token) 85IO.puts("Created service actor token: #{service_account_actor_encoded_token}") 86File.write("client_token.txt", service_account_actor_encoded_token)