Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions .dialyzer_ignore.exs

This file was deleted.

20 changes: 10 additions & 10 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ jobs:

strategy:
matrix:
elixir: [1.11]
otp: [23.1]
elixir: [1.12]
otp: [24.0]

steps:
- uses: actions/checkout@v2
Expand Down Expand Up @@ -54,8 +54,8 @@ jobs:

strategy:
matrix:
elixir: [1.11]
otp: [23.1]
elixir: [1.12]
otp: [24.0]

steps:
- uses: actions/checkout@v2
Expand Down Expand Up @@ -86,8 +86,8 @@ jobs:

strategy:
matrix:
elixir: [1.11]
otp: [23.1]
elixir: [1.12]
otp: [24.0]

steps:
- uses: actions/checkout@v2
Expand All @@ -110,7 +110,7 @@ jobs:
id: plt-cache
with:
path: dializer/plts/
key: ${{ runner.os }}-${{ matrix.otp }}-${{ matrix.elixir }}-plts-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }}
key: plt-${{ runner.os }}-${{ matrix.otp }}-${{ matrix.elixir }}-plts-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }}

- name: Generate PLT
if: steps.plt-cache.outputs.cache-hit != 'true'
Expand All @@ -119,7 +119,7 @@ jobs:
mix dialyzer --plt

- name: Run dialyzer
run: mix dialyzer --no-check --halt-exit-status
run: mix dialyzer --no-check

tests:
name: Tests
Expand All @@ -128,8 +128,8 @@ jobs:

strategy:
matrix:
elixir: [1.11]
otp: [23.1]
elixir: [1.12]
otp: [24.0]

services:
postgres:
Expand Down
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
/cover/

# The directory where the files will be saved on every build.
/dialyzer/
/dialyzer/plts/

# The directory Mix downloads your dependencies sources to.
/deps/
Expand Down
4 changes: 2 additions & 2 deletions .tool-versions
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
elixir 1.11.4-otp-23
erlang 23.1
elixir 1.12.2-otp-24
erlang 24.0
1 change: 1 addition & 0 deletions apps/authenticator/coveralls.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
"skip_files": [
"test/support/data_case.ex",
"test/support/factory.ex",
"lib/ports/resource_manager.ex",
"lib/sign_in/commands/behaviour.ex",
"lib/sessions/cache.ex",
"lib/authenticator.ex",
Expand Down
2 changes: 1 addition & 1 deletion apps/authenticator/mix.exs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ defmodule Authenticator.MixProject do
elixirc_paths: elixirc_paths(Mix.env()),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.11",
elixir: "~> 1.12",
start_permanent: Mix.env() == :prod,
deps: deps(),
aliases: aliases(),
Expand Down
12 changes: 12 additions & 0 deletions apps/authorizer/coveralls.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"coverage_options": {
"treat_no_relevant_lines_as_covered": true,
"output_dir": "cover/",
"minimum_coverage": 80
},
"skip_files": [
"test/support/data_case.ex",
"test/support/factory.ex",
"lib/ports/resource_manager.ex"
]
}
2 changes: 1 addition & 1 deletion apps/authorizer/mix.exs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ defmodule Authorizer.MixProject do
elixirc_paths: elixirc_paths(Mix.env()),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.11",
elixir: "~> 1.12",
start_permanent: Mix.env() == :prod,
deps: deps(),
test_coverage: [tool: ExCoveralls]
Expand Down
1 change: 1 addition & 0 deletions apps/resource_manager/coveralls.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
"skip_files": [
"test/support/data_case.ex",
"test/support/factory.ex",
"lib/ports/authenticator.ex",
"lib/resource_manager.ex",
"lib/credentials/ports/*",
"lib/application.ex",
Expand Down
6 changes: 3 additions & 3 deletions apps/resource_manager/lib/credentials/schemas/password.ex
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ defmodule ResourceManager.Credentials.Schemas.Password do
password_hash: String.t(),
algorithm: String.t(),
salt: integer(),
inserted_at: Datetime.t(),
updated_at: Datetime.t()
inserted_at: NaiveDatetime.t(),
updated_at: NaiveDatetime.t()
}

# Changeset validation arguments
Expand All @@ -51,7 +51,7 @@ defmodule ResourceManager.Credentials.Schemas.Password do
def changeset(params) when is_map(params), do: changeset(%__MODULE__{}, params)

@doc "Generates an `%Ecto.Changeset to be used in update operations."
@spec changeset(model :: __MODULE__.t(), params :: map()) :: Ecto.Changeset.t()
@spec changeset(model :: %__MODULE__{}, params :: map()) :: Ecto.Changeset.t()
def changeset(%__MODULE__{} = model, params) when is_map(params) do
model
|> cast(params, @optional_fields)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ defmodule ResourceManager.Credentials.Schemas.PublicKey do
def changeset(params) when is_map(params), do: changeset(%__MODULE__{}, params)

@doc "Generates an `%Ecto.Changeset to be used in update operations."
@spec changeset(model :: __MODULE__.t(), params :: map()) :: Ecto.Changeset.t()
@spec changeset(model :: %__MODULE__{}, params :: map()) :: Ecto.Changeset.t()
def changeset(%__MODULE__{} = model, params) when is_map(params) do
model
|> cast(params, @required_fields ++ @optional_fields)
Expand Down
34 changes: 33 additions & 1 deletion apps/resource_manager/lib/domain.ex
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ defmodule ResourceManager.Domain do
quote do
alias ResourceManager.Repo

require Logger

@schema unquote(opts[:schema_model])

@typedoc "Possible response types"
Expand All @@ -18,6 +20,15 @@ defmodule ResourceManager.Domain do
params
|> @schema.changeset()
|> Repo.insert()
|> case do
{:ok, _model} = response ->
Logger.debug("#{inspect(@schema)} created with success")
response

{:error, reason} = response ->
Logger.debug("#{inspect(@schema)} creation failed because #{inspect(reason)}")
response
end
end

@doc "Updates a #{@schema} with the given params"
Expand All @@ -26,11 +37,32 @@ defmodule ResourceManager.Domain do
model
|> @schema.changeset(params)
|> Repo.update()
|> case do
{:ok, _model} = response ->
Logger.debug("#{inspect(@schema)} updated with success")
response

{:error, reason} = response ->
Logger.debug("#{inspect(@schema)} update failed because #{inspect(reason)}")
response
end
end

@doc "Deletes a #{@schema} from the database"
@spec delete(model :: @schema.t()) :: {:ok, @schema.t()}
def delete(%@schema{} = model), do: Repo.delete(model)
def delete(%@schema{} = model) do
model
|> Repo.delete()
|> case do
{:ok, _model} = response ->
Logger.debug("#{inspect(@schema)} deleted with success")
response

{:error, reason} = response ->
Logger.debug("#{inspect(@schema)} delete failed because #{inspect(reason)}")
response
end
end

@doc "Checks if a #{@schema} exists with the given fields"
@spec exists?(fields :: Keyword.t()) :: boolean()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,8 @@ defmodule ResourceManager.Identities.Commands.CreateClientApplication do
|> ClientApplications.create()
end

defp create_permission(client_application, %{scopes: scopes}),
defp create_permission(client_application, %{scopes: scopes}) when is_list(scopes),
do: ConsentScope.execute(client_application, scopes)

defp create_permission(_client_application, _), do: {:ok, :ignore}
defp create_permission(_client_application, _permission), do: {:ok, :ignore}
end
6 changes: 4 additions & 2 deletions apps/resource_manager/lib/identities/commands/create_user.ex
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@ defmodule ResourceManager.Identities.Commands.CreateUser do
|> Users.create()
end

defp create_permission(user, %{scopes: scopes}), do: ConsentScope.execute(user, scopes)
defp create_permission(_user, _), do: {:ok, :ignore}
defp create_permission(user, %{scopes: scopes}) when is_list(scopes),
do: ConsentScope.execute(user, scopes)

defp create_permission(_user, _permission), do: {:ok, :ignore}
end
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ defmodule ResourceManager.Identities.Schemas.ClientApplication do
def changeset(params) when is_map(params), do: changeset(%__MODULE__{}, params)

@doc "Generates an `%Ecto.Changeset to be used in update operations."
@spec changeset(model :: __MODULE__.t(), params :: map()) :: Ecto.Changeset.t()
@spec changeset(model :: %__MODULE__{}, params :: map()) :: Ecto.Changeset.t()
def changeset(%__MODULE__{} = model, params) when is_map(params) do
model
|> cast(params, @required_fields ++ @optional_fields)
Expand Down
2 changes: 1 addition & 1 deletion apps/resource_manager/lib/identities/schemas/user.ex
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ defmodule ResourceManager.Identities.Schemas.User do
def changeset(params) when is_map(params), do: changeset(%__MODULE__{}, params)

@doc "Generates an `%Ecto.Changeset to be used in update operations."
@spec changeset(model :: __MODULE__.t(), params :: map()) :: Ecto.Changeset.t()
@spec changeset(model :: %__MODULE__{}, params :: map()) :: Ecto.Changeset.t()
def changeset(%__MODULE__{} = model, params) when is_map(params) do
model
|> cast(params, @required_fields ++ @optional_fields)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,8 @@ defmodule ResourceManager.Permissions.Commands.RemoveScope do
alias ResourceManager.Permissions.Schemas.{ClientApplicationScope, UserScope}
alias ResourceManager.Repo

@typedoc "All possible identities"
@type identities :: User.t() | ClientApplication.t()

@typedoc "All possible responses"
@type possible_response :: {:ok, list(identities())} | {:error, Ecto.Changeset.t()}

@doc "Remove scopes from the identity"
@spec execute(identity :: identities(), scopes :: list(String.t())) :: possible_response()
@spec execute(identity :: User.t() | ClientApplication.t(), scopes :: list(String.t())) :: :ok
def execute(%User{} = user, scopes) when is_list(scopes) do
Logger.debug("Removing scopes from user #{user.id}")

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ defmodule ResourceManager.Permissions.Schemas.ClientApplicationScope do
def changeset(params) when is_map(params), do: changeset(%__MODULE__{}, params)

@doc "Generates an `%Ecto.Changeset to be used in update operations."
@spec changeset(model :: __MODULE__.t(), params :: map()) :: Ecto.Changeset.t()
@spec changeset(model :: %__MODULE__{}, params :: map()) :: Ecto.Changeset.t()
def changeset(%__MODULE__{} = model, params) when is_map(params) do
model
|> cast(params, @required_fields)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ defmodule ResourceManager.Permissions.Schemas.Scope do
def changeset(params) when is_map(params), do: changeset(%__MODULE__{}, params)

@doc "Generates an `%Ecto.Changeset to be used in update operations."
@spec changeset(model :: __MODULE__.t(), params :: map()) :: Ecto.Changeset.t()
@spec changeset(model :: %__MODULE__{}, params :: map()) :: Ecto.Changeset.t()
def changeset(%__MODULE__{} = model, params) when is_map(params) do
model
|> cast(params, @required ++ @optional)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ defmodule ResourceManager.Permissions.Schemas.UserScope do
def changeset(params) when is_map(params), do: changeset(%__MODULE__{}, params)

@doc "Generates an `%Ecto.Changeset to be used in update operations."
@spec changeset(model :: __MODULE__.t(), params :: map()) :: Ecto.Changeset.t()
@spec changeset(model :: %__MODULE__{}, params :: map()) :: Ecto.Changeset.t()
def changeset(%__MODULE__{} = model, params) when is_map(params) do
model
|> cast(params, @required_fields)
Expand Down
2 changes: 1 addition & 1 deletion apps/resource_manager/mix.exs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ defmodule ResourceManager.MixProject do
elixirc_paths: elixirc_paths(Mix.env()),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.11",
elixir: "~> 1.12",
start_permanent: Mix.env() == :prod,
aliases: aliases(),
deps: deps(),
Expand Down
3 changes: 3 additions & 0 deletions apps/rest_api/coveralls.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@
},
"skip_files": [
"test/support/conn_case.ex",
"lib/ports/authenticator.ex",
"lib/ports/authorizer.ex",
"lib/ports/resource_manager.ex",
"lib/application.ex",
"lib/controller.ex",
"lib/telemetry.ex",
Expand Down
12 changes: 9 additions & 3 deletions apps/rest_api/lib/plugs/tracker.ex
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,7 @@ defmodule RestAPI.Plugs.Tracker do
"request_id" => get_request_id(conn)
}

Logger.metadata(traking_data)

put_private(conn, :tracking, traking_data)
append_tracking_data(conn, traking_data)
end

defp get_remote_ip(conn) do
Expand All @@ -48,4 +46,12 @@ defmodule RestAPI.Plugs.Tracker do
[request_id | _] -> request_id
end
end

defp append_tracking_data(conn, traking_data) do
traking_data
|> Enum.map(fn {key, value} -> {String.to_atom(key), value} end)
|> Logger.metadata()

put_private(conn, :tracking, traking_data)
end
end
2 changes: 1 addition & 1 deletion apps/rest_api/mix.exs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ defmodule RestAPI.MixProject do
config_path: "../../config/config.exs",
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.11",
elixir: "~> 1.12",
elixirc_paths: elixirc_paths(Mix.env()),
compilers: [:phoenix] ++ Mix.compilers(),
start_permanent: Mix.env() == :prod,
Expand Down
33 changes: 33 additions & 0 deletions dialyzer/ignore-warnings.exs
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
[
{"lib/identities/users.ex", :no_return},
{"lib/identities/users.ex", :unknown_type},
{"lib/identities/client_applications.ex", :no_return},
{"lib/identities/client_applications.ex", :unknown_type},
{"lib/identities/schemas/user.ex", :no_return},
{"lib/identities/schemas/user.ex", :unknown_type},
{"lib/identities/schemas/client_application.ex", :no_return},
{"lib/identities/schemas/client_application.ex", :unknown_type},
{"lib/identities/commands/create_user.ex", :unknown_type},
{"lib/identities/commands/create_client_application.ex", :unknown_type},
{"lib/identities/commands/get_identity.ex", :unknown_type},
{"lib/credentials/passwords.ex", :no_return},
{"lib/credentials/passwords.ex", :unknown_type},
{"lib/credentials/public_keys.ex", :no_return},
{"lib/credentials/public_keys.ex", :unknown_type},
{"lib/credentials/schemas/password.ex", :no_return},
{"lib/credentials/schemas/password.ex", :unknown_type},
{"lib/credentials/schemas/public_key.ex", :no_return},
{"lib/credentials/schemas/public_key.ex", :unknown_type},
{"lib/credentials/passwords.ex", :unknown_type},
{"lib/permissions/scopes.ex", :no_return},
{"lib/permissions/scopes.ex", :unknown_type},
{"lib/permissions/schemas/scope.ex", :no_return},
{"lib/permissions/schemas/scope.ex", :unknown_type},
{"lib/permissions/schemas/user_scope.ex", :no_return},
{"lib/permissions/schemas/user_scope.ex", :unknown_type},
{"lib/permissions/schemas/client_application_scope.ex", :no_return},
{"lib/permissions/schemas/client_application_scope.ex", :unknown_type},
{"lib/permissions/commands/consent_scope.ex", :unknown_type},
{"lib/permissions/commands/remove_scope.ex", :unknown_type},
{"lib/phoenix/router.ex", :pattern_match, 402}
]
Loading