Skip to content

Instantly share code, notes, and snippets.

defmodule ElijahWeb.EnsureRolePlug do
@moduledoc """
This plug ensures that a user has a particular role before accessing a given route.
## Example
Let's suppose we have three roles: :admin, :manager and :user.
If you want a user to have at least manager role, so admins and managers are authorised to access a given route
plug ElijahWeb.EnsureRolePlug, [:admin, :manager]
defmodule ElijahWeb.Router do
use ElijahWeb, :router
import ElijahWeb.UserAuth
import Plug.BasicAuth
alias ElijahWeb.EnsureRolePlug
pipeline :browser do
plug :accepts, ["html"]
plug :fetch_session
@mazz
mazz / app.js
Last active October 23, 2020 22:56
liveview alpine modal live component
// We need to import the CSS so that webpack will load it.
// The MiniCssExtractPlugin is used to separate it out into
// its own CSS file.
import "../css/app.scss"
// webpack automatically bundles all modules in your
// entry points. Those entry points can be configured
// in "webpack.config.js".
//
// Import deps with the dep name or local files with a relative path, for example:
@mazz
mazz / error.log
Last active October 22, 2020 03:15
runtime error
[error] an exception was raised:
** (Phoenix.Template.UndefinedError) Could not render "invitation_request.html" for ElijahWeb.InvitationRequestView, please define a matching clause for render/2 or define a template at "lib/elijah_web/templates/invitation_request/*". The following templates were compiled:
* invitation_request_loading.html
[error] an exception was raised:
** (Phoenix.Template.UndefinedError) Could not render "invitation_request.html" for ElijahWeb.InvitationRequestView, please define a matching clause for render/2 or define a template at "lib/elijah_web/templates/invitation_request/*". The following templates were compiled:
* invitation_request_loading.html
@mazz
mazz / iex.ex
Created October 19, 2020 20:43
insert two users to the same org, second association clobbers first
iex(2)> org = Repo.get(Org, 1)
[debug] QUERY OK source="orgs" db=11.6ms decode=1.4ms queue=1.4ms idle=1333.3ms
SELECT o0."id", o0."basename", o0."shortname", o0."uuid", o0."hash_id", o0."inserted_at", o0."updated_at" FROM "orgs" AS o0 WHERE (o0."id" = $1) [1]
%Elijah.Schema.Org{
__meta__: #Ecto.Schema.Metadata<:loaded, "orgs">,
basename: "app",
channels: #Ecto.Association.NotLoaded<association :channels is not loaded>,
hash_id: "6vz6",
id: 1,
inserted_at: ~U[2020-10-19 16:27:51Z],
@mazz
mazz / search_live.ex
Last active October 5, 2020 12:10
liveview
defmodule ElijahWeb.SearchLive do
use ElijahWeb, :live_view
alias Elijah.Bank
require Logger
def mount(_params, _session, socket) do
socket =
assign(socket,
[debug] QUERY OK source="users" db=1.8ms decode=2.1ms queue=1.4ms idle=130.8ms
SELECT TRUE FROM "users" AS u0 WHERE (u0."email" = $1) LIMIT 1 ["[email protected]"]
#Ecto.Changeset<
action: nil,
changes: %{email: "[email protected]", password: "rubf6TFg"},
errors: [],
data: #Elijah.Accounts.User<>,
valid?: true
>
#Ecto.Changeset<
@mazz
mazz / simplecombine.swift
Created August 25, 2020 16:54
simple combine example
//
// ViewController.swift
// combinetest
//
// Created by Michael on 2020-08-25.
// Copyright © 2020 Michael. All rights reserved.
//
import Cocoa
import Combine
@mazz
mazz / NYXAVCEncoder.swift
Created August 13, 2020 21:49 — forked from Nyx0uf/NYXAVCEncoder.swift
Hardware accelerated GIF to MP4 converter in Swift using VideoToolbox
import VideoToolbox
import AVFoundation
private var __canHWAVC: Bool = false
private var __tokenHWAVC: dispatch_once_t = 0
public protocol NYXAVCEncoderDelegate : class
{
func didEncodeFrame(frame: CMSampleBuffer)
func didFailToEncodeFrame()