From 14e3c6a61f7727e994c4e1cf2568a3e606f84648 Mon Sep 17 00:00:00 2001 From: Ben Sima Date: Sat, 27 Jun 2020 09:20:59 -0700 Subject: hero: implement the basics of user logins There's also a lot of refactoring/renaming in here, so the diff is really messy. The overall problem is that I've only ever added code, I've never gone back and reorganized/rearchitected stuff. So adding even small features is becoming an enormous effort. Anyway, this adds the basics of user auth. Next I need to add the auth checks for every route that needs it, and make sure everything is back to working correctly. --- nix/haskell-deps.nix | 3 +++ nix/haskell-overlay.nix | 13 ++++++++++--- nix/sources.json | 12 ++++++++++++ 3 files changed, 25 insertions(+), 3 deletions(-) (limited to 'nix') diff --git a/nix/haskell-deps.nix b/nix/haskell-deps.nix index 44c2050..26981dc 100644 --- a/nix/haskell-deps.nix +++ b/nix/haskell-deps.nix @@ -33,6 +33,8 @@ "safecopy" "scotty" "servant" + "servant-auth" + "servant-auth-server" "servant-lucid" "servant-server" "split" @@ -50,4 +52,5 @@ "wai-extra" "wai-middleware-metrics" "warp" + "x509" ] diff --git a/nix/haskell-overlay.nix b/nix/haskell-overlay.nix index 1afea87..f37d602 100644 --- a/nix/haskell-overlay.nix +++ b/nix/haskell-overlay.nix @@ -1,20 +1,27 @@ _: pkgs: let - cabalBuilder = self: name: self.callCabal2nix name pkgs.sources.${name} {}; + simpleCabalBuilder = self: name: + self.callCabal2nix name pkgs.sources.${name} {}; + buildCabal = self: name: subdir: + if isNull subdir then + self.callCabal2nix name pkgs.sources.${name} {} + else + self.callCabal2nix name (pkgs.sources.${name} + "/${subdir}") {}; in { haskell = pkgs.haskell // { packages = pkgs.haskell.packages // { ghc865 = pkgs.haskell.packages.ghc865.override (old: { overrides = with pkgs.pkgs.haskell.lib; self: super: - pkgs.overridePinnedDeps (cabalBuilder self) // { + pkgs.overridePinnedDeps (simpleCabalBuilder self) // { + servant-auth = buildCabal self "servant-auth" "servant-auth"; wai-middleware-metrics = dontCheck super.wai-middleware-metrics; }; }); ghcjs = pkgs.haskell.packages.ghcjs.override (old: { overrides = with pkgs.haskell.lib; self: super: - pkgs.overridePinnedDeps (cabalBuilder self) // { + pkgs.overridePinnedDeps (simpleCabalBuilder self) // { QuickCheck = dontCheck super.QuickCheck; base-compat-batteries = dontCheck super.http-types; clay = dontCheck super.clay; diff --git a/nix/sources.json b/nix/sources.json index 195a218..fdbb4b6 100644 --- a/nix/sources.json +++ b/nix/sources.json @@ -62,6 +62,18 @@ "url": "https://github.com/NixOS/nixpkgs/archive/b0c285807d6a9f1b7562ec417c24fa1a30ecc31a.tar.gz", "url_template": "https://github.com///archive/.tar.gz" }, + "servant-auth": { + "branch": "master", + "description": null, + "homepage": null, + "owner": "haskell-servant", + "repo": "servant-auth", + "rev": "696fab268e21f3d757b231f0987201b539c52621", + "sha256": "1had0xyh511q7ggw2mlfhhk7pfbc30gqm2c9gj1y7pbflmsjgjda", + "type": "tarball", + "url": "https://github.com/haskell-servant/servant-auth/archive/696fab268e21f3d757b231f0987201b539c52621.tar.gz", + "url_template": "https://github.com///archive/.tar.gz" + }, "wemux": { "branch": "master", "description": "Multi-User Tmux Made Easy", -- cgit v1.2.3