From c103940de642f583737d828ce11ed7b55a6f087a Mon Sep 17 00:00:00 2001 From: Muhammad Rafif Elfazri <rafif.elfazri@gmail.com> Date: Fri, 19 Feb 2021 14:13:49 +0700 Subject: [PATCH] add role to users schema --- lib/diskuy/account/user.ex | 5 +++-- lib/diskuy_web/auth/google_auth.ex | 8 ++++++-- lib/diskuy_web/views/user_view.ex | 4 +++- priv/repo/migrations/20201211030926_create_users.exs | 1 + 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/lib/diskuy/account/user.ex b/lib/diskuy/account/user.ex index cb69976..2812554 100644 --- a/lib/diskuy/account/user.ex +++ b/lib/diskuy/account/user.ex @@ -6,14 +6,15 @@ defmodule Diskuy.Account.User do field :username, :string field :email, :string field :picture, :string + field :role, :string, default: "reguler" timestamps() end @doc false def changeset(user, attrs) do user - |> cast(attrs, [:username, :email, :picture]) - |> validate_required([:username, :email]) + |> cast(attrs, [:username, :email, :picture, :role]) + |> validate_required([:username, :email, :role]) |> validate_format(:email, ~r/^[A-Za-z0-9._-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/) |> unique_constraint(:username) |> unique_constraint(:email) diff --git a/lib/diskuy_web/auth/google_auth.ex b/lib/diskuy_web/auth/google_auth.ex index 2139320..83ed14b 100644 --- a/lib/diskuy_web/auth/google_auth.ex +++ b/lib/diskuy_web/auth/google_auth.ex @@ -27,10 +27,14 @@ defmodule DiskuyWeb.Auth.GoogleAuth do case Account.get_by_username(username) do {:ok, _user} -> new_username = create_username(username) - {:ok, user} = Account.create_user(%{username: new_username, email: email, picture: picture}) + {:ok, user} = Account.create_user(%{username: new_username, + email: email, + picture: picture, role: "reguler"}) Guardian.create_token(user) {:error, :not_found} -> - {:ok, user} = Account.create_user(%{username: username, email: email, picture: picture}) + {:ok, user} = Account.create_user(%{username: username, + email: email, + picture: picture, role: "reguler"}) Guardian.create_token(user) end end diff --git a/lib/diskuy_web/views/user_view.ex b/lib/diskuy_web/views/user_view.ex index 45a172b..a2b2732 100644 --- a/lib/diskuy_web/views/user_view.ex +++ b/lib/diskuy_web/views/user_view.ex @@ -18,7 +18,8 @@ defmodule DiskuyWeb.UserView do %{id: user.id, username: user.username, name: user.email, - picture: user.picture + picture: user.picture, + role: user.role } end @@ -28,6 +29,7 @@ defmodule DiskuyWeb.UserView do email: user.email, username: user.username, picture: user.picture, + role: user.role, token: token } end diff --git a/priv/repo/migrations/20201211030926_create_users.exs b/priv/repo/migrations/20201211030926_create_users.exs index 3006c38..3157e90 100644 --- a/priv/repo/migrations/20201211030926_create_users.exs +++ b/priv/repo/migrations/20201211030926_create_users.exs @@ -6,6 +6,7 @@ defmodule Diskuy.Repo.Migrations.CreateUsers do add :username, :string add :email, :string add :picture, :string + add :role, :string timestamps() end create unique_index(:users, [:username]) -- GitLab