on master help sign in
wip
commit72797ae10467016b937fbef58c4947dae0d0859e authoriko <ilyakooo0@gmail.com> dateSun 24 Jul 2022, 07:19 (4 years ago) parent219f2bf
5 files changed+60−4
bw/spago.dhall+1 bw/src/BW/Logic.purs+19−4 ell/spago.dhall+8 ell/src/Control/Ell.purs+31 packages.dhall+1
bw/spago.dhall+1
@@ -10,6 +10,7 @@
1010 , "maybe"
1111 , "newtype"
1212 , "prelude"
13+ , "ell"
1314 ]
1415, packages = ../packages.dhall
1516, sources = [ "src/**/*.purs" ]
bw/src/BW/Logic.purs+19−4
@@ -1,12 +1,27 @@
11module BW.Logic where
22
3+import BW.Types
34import Prelude
45
5−import BW.Types
6+import Control.Ell (class EllHas, Ell, l)
7+import Data.Nullable (null)
68
7−newtype Username = Username String
9+newtype Email = Email String
810
911newtype Password = Password String
1012
11−-- generateLogin :: Username -> Password -> PasswordTokenRequest
12−-- generateLogin (Username user) (Password password) = 1
13+generateLogin :: forall r. EllHas (hashPassword :: String -> Ell r String) r => Email -> Password -> Ell r PasswordTokenRequest
14+generateLogin (Email email) (Password password) = do
15+ _ <- l _.hashPassword ""
16+ -- let token = user ++ password
17+ pure $
18+ { email
19+ , masterPasswordHash: ""
20+ , captchaResponse: ""
21+ , twoFactor: {
22+ provider: twoFactorProviderTypeEmail,
23+ token: "",
24+ remember: true
25+ }
26+ , device: null
27+ }
ell/spago.dhallnew file+8
@@ -0,0 +1,8 @@
1+{ name = "bw"
2+, dependencies =
3+ [ "prelude"
4+ , "transformers"
5+ ]
6+, packages = ../packages.dhall
7+, sources = [ "src/**/*.purs" ]
8+}
ell/src/Control/Ell.pursnew file+31
@@ -0,0 +1,31 @@
1+module Control.Ell where
2+
3+import Prelude
4+
5+import Control.Monad.Reader (ReaderT, asks)
6+import Effect (Effect)
7+import Prim.Row (class Cons, class Union, class Nub)
8+
9+type Ell r a = ReaderT { | r } Effect a
10+
11+l :: forall r a res. ApplyEll r a res => ({ | r } -> a) -> res
12+l f = appEll (asks f)
13+
14+class EllHas row r
15+
16+instance (Union row r r', Nub r' r) => EllHas row r
17+
18+class ApplyEll r a res | r a -> res where
19+ appEll :: Ell r a -> res
20+
21+instance ApplyEll r b c => ApplyEll r (a -> b) (a -> c) where
22+ appEll f a = appEll ((\g -> g a) <$> f)
23+
24+else instance ApplyEll r (Ell r a) (Ell r a) where
25+ appEll = join
26+
27+else instance ApplyEll r a (Ell r a) where
28+ appEll = identity
29+
30+foo ∷ ∀ (t55 ∷ Type) (t56 ∷ Row Type). { foo ∷ t55 | t56 } → t55
31+foo = _.foo
packages.dhall+1
@@ -104,6 +104,7 @@ let upstream =
104104
105105in upstream
106106 with bw = ./bw/spago.dhall as Location
107+ with ell = ./ell/spago.dhall as Location
107108 with argonaut-aeson-generic =
108109 { dependencies =
109110 [ "argonaut-codecs"