refactor(auth): use heex templates
Signed-off-by: SphericalKat <amolele@gmail.com>
This commit is contained in:
		
							parent
							
								
									2ddccce85d
								
							
						
					
					
						commit
						8f4672b516
					
				| @ -33,31 +33,34 @@ config :ketbin, KetbinWeb.Endpoint, | ||||
|   secret_key_base: secret_key_base, | ||||
|   server: true | ||||
| 
 | ||||
|   smtp_relay = | ||||
|     System.get_env("SWOOSH_SMTP_RELAY") || | ||||
|       raise """ | ||||
|       environment variable SWOOSH_SMTP_RELAY is missing. | ||||
|       """ | ||||
|   username = | ||||
|     System.get_env("SWOOSH_USERNAME") || | ||||
|       raise """ | ||||
|       environment variable SWOOSH_USERNAME is missing. | ||||
|       """ | ||||
|   password = | ||||
|     System.get_env("SWOOSH_PASSWORD") || | ||||
|       raise """ | ||||
|       environment variable SWOOSH_PASSWORD is missing. | ||||
|       """ | ||||
| smtp_relay = | ||||
|   System.get_env("SWOOSH_SMTP_RELAY") || | ||||
|     raise """ | ||||
|     environment variable SWOOSH_SMTP_RELAY is missing. | ||||
|     """ | ||||
| 
 | ||||
| username = | ||||
|   System.get_env("SWOOSH_USERNAME") || | ||||
|     raise """ | ||||
|     environment variable SWOOSH_USERNAME is missing. | ||||
|     """ | ||||
| 
 | ||||
| password = | ||||
|   System.get_env("SWOOSH_PASSWORD") || | ||||
|     raise """ | ||||
|     environment variable SWOOSH_PASSWORD is missing. | ||||
|     """ | ||||
| 
 | ||||
| # configure mailer | ||||
| config :ketbin, Ketbin.Mailer, | ||||
|   adapter: Swoosh.Adapters.SMTP, | ||||
|   relay: smtp_relay, | ||||
|   username: username, | ||||
|   password: password, | ||||
|   tls: :always, | ||||
|   auth: :always, | ||||
|   port: 587 | ||||
| 
 | ||||
|   # configure mailer | ||||
|   config :ketbin, Ketbin.Mailer, | ||||
|     adapter: Swoosh.Adapters.SMTP, | ||||
|     relay: smtp_relay, | ||||
|     username: username, | ||||
|     password: password, | ||||
|     tls: :always, | ||||
|     auth: :always, | ||||
|     port: 587 | ||||
| # ## Using releases (Elixir v1.9+) | ||||
| # | ||||
| # If you are doing OTP releases, you need to instruct Phoenix | ||||
|  | ||||
| @ -13,14 +13,19 @@ defmodule Ketbin.Pastes.Utils do | ||||
| 
 | ||||
|   def generate_key(length \\ 10) do | ||||
|     random = Enum.random([0, 1]) | ||||
|     Enum.map(0..length, fn i -> if Integer.mod(i, 2) == random, do: rand_consonant(), else: rand_vowel() end) | ||||
|     |> List.to_string | ||||
| 
 | ||||
|     Enum.map(0..length, fn i -> | ||||
|       if Integer.mod(i, 2) == random, do: rand_consonant(), else: rand_vowel() | ||||
|     end) | ||||
|     |> List.to_string() | ||||
|   end | ||||
| 
 | ||||
|   def is_url?(url) do | ||||
|     try do | ||||
|       uri = URI.parse(url) | ||||
|       uri.scheme != nil && uri.host =~ "." && Enum.member?(["https", "http", "mailto"], uri.scheme) && !(uri.host =~ "katb.in") | ||||
| 
 | ||||
|       uri.scheme != nil && uri.host =~ "." && | ||||
|         Enum.member?(["https", "http", "mailto"], uri.scheme) && !(uri.host =~ "katb.in") | ||||
|     rescue | ||||
|       FunctionClauseError -> false | ||||
|     end | ||||
|  | ||||
| @ -23,14 +23,23 @@ defmodule KetbinWeb.PageController do | ||||
|     if paste.is_url do | ||||
|       redirect(conn, external: paste.content) | ||||
|     else | ||||
|       render(conn, "show.html", paste: paste, show_edit: show_edit, extension: List.first(tail) || "") | ||||
|       render(conn, "show.html", | ||||
|         paste: paste, | ||||
|         show_edit: show_edit, | ||||
|         extension: List.first(tail) || "" | ||||
|       ) | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def showlink(%{assigns: %{show_edit: show_edit}} = conn, %{"id" => id}) do | ||||
|     [head | tail] = String.split(id, ".") | ||||
|     paste = Pastes.get_paste!(head) | ||||
|     render(conn, "show.html", paste: paste, show_edit: show_edit, extension: (if tail == [], do: "", else: tail)) | ||||
| 
 | ||||
|     render(conn, "show.html", | ||||
|       paste: paste, | ||||
|       show_edit: show_edit, | ||||
|       extension: if(tail == [], do: "", else: tail) | ||||
|     ) | ||||
|   end | ||||
| 
 | ||||
|   def raw(conn, %{"id" => id}) do | ||||
|  | ||||
| @ -97,15 +97,16 @@ defmodule KetbinWeb.UserAuth do | ||||
|   end | ||||
| 
 | ||||
|   def owns_paste(%{params: %{"id" => id}, assigns: %{current_user: user}} = conn, _params) do | ||||
|     [head|_tail] = String.split(id, ".") | ||||
|     [head | _tail] = String.split(id, ".") | ||||
|     paste = Pastes.get_paste!(head) | ||||
|     assign(conn, :show_edit, (user && user.id == paste.belongs_to) || false) | ||||
|   end | ||||
| 
 | ||||
|   def ensure_owns_paste(%{params: %{"id" => id}, assigns: %{current_user: user}} = conn, _params) do | ||||
|     [head|_tail] = String.split(id, ".") | ||||
|     [head | _tail] = String.split(id, ".") | ||||
|     paste = Pastes.get_paste!(head) | ||||
|     allow_edit = (user && user.id == paste.belongs_to) || false | ||||
| 
 | ||||
|     unless allow_edit do | ||||
|       conn | ||||
|       |> put_flash(:error, "You don't own this paste!") | ||||
|  | ||||
| @ -46,6 +46,7 @@ defmodule KetbinWeb.UserSettingsController do | ||||
|         |> UserAuth.log_in_user(user) | ||||
| 
 | ||||
|         conn | ||||
| 
 | ||||
|       {:error, changeset} -> | ||||
|         render(conn, "edit.html", password_changeset: changeset) | ||||
|     end | ||||
|  | ||||
| @ -1,4 +1,4 @@ | ||||
| 	<h1 class="font-bold text-4xl text-amber pt-4 w-full text-center">Settings</h1> | ||||
| <h1 class="font-bold text-4xl text-amber pt-4 w-full text-center">Settings</h1> | ||||
| 
 | ||||
| <div class="flex w-full h-full justify-center items-center"> | ||||
| <%= form_for @email_changeset, Routes.user_settings_path(@conn, :update), [class: "flex flex-col h-full justify-center items-start m-auto"], fn f -> %> | ||||
| @ -63,4 +63,4 @@ | ||||
| 			<%= submit "Change password" %> | ||||
| 		</div> | ||||
| 	<% end %> | ||||
| <div> | ||||
| </div> | ||||
							
								
								
									
										2
									
								
								mix.exs
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								mix.exs
									
									
									
									
									
								
							| @ -20,7 +20,7 @@ defmodule Ketbin.MixProject do | ||||
|   def application do | ||||
|     [ | ||||
|       mod: {Ketbin.Application, []}, | ||||
|       extra_applications: [:logger, :runtime_tools, :ssl], | ||||
|       extra_applications: [:logger, :runtime_tools, :ssl] | ||||
|     ] | ||||
|   end | ||||
| 
 | ||||
|  | ||||
| @ -75,6 +75,7 @@ defmodule KetbinWeb.PasteControllerTest do | ||||
|     test "deletes chosen paste", %{conn: conn, paste: paste} do | ||||
|       conn = delete(conn, Routes.paste_path(conn, :delete, paste)) | ||||
|       assert redirected_to(conn) == Routes.paste_path(conn, :index) | ||||
| 
 | ||||
|       assert_error_sent 404, fn -> | ||||
|         get(conn, Routes.paste_path(conn, :show, paste)) | ||||
|       end | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user