UO66QO7K6PZ6M6T4WZYRAUOEQMJLHB6GURC2LI4VABZOUWGCOSWAC
OVU272MTFF2XBBDVUH7GCQ6FX5NZFC7FYU57TQI6GTA6SLQKEKFAC
IR75ZMX32SFFMDNV2I2L22X5JTWCOC4UUBCSPU7S6VHR6HFV6ADQC
M4PWY5RUV72AEDCNC4O7UKBPHBIACR4354YTSC3SUZGWFV5UBJBQC
HALRDT2F22DAQ54M334YSKD2XJCAXDXEZPDKGMOWKH7XELBAS6MAC
X3ES7NUA42D2BF7CQDDKXM5CLMVCYA3H5YU5KXLPTGDBFPE2LNVAC
HMDM3B557TO5RYP2IGFFC2C2VN6HYZTDQ47CJY2O37BW55DSMFZAC
4R7XIYK3BP664CO3YJ2VM64ES2JYN27UTQG5KS34OTEPAIODSZLQC
( user' ^. (username . _UserName),
user' ^? userAccountRecovery . _RecoverByEmail . _Email,
user' ^? userAccountRecovery . _RecoverByZAddr . Zcash._Address
)
( user' ^. (username . _UserName),
user' ^? userAccountRecovery . _RecoverByEmail . _Email,
user' ^? userAccountRecovery . _RecoverByZAddr . Zcash._Address
)
module Aftok.Project where
module Aftok.Project
( Project (..),
ProjectName,
projectName,
inceptionDate,
initiator,
depRules,
InvitationCode,
randomInvCode,
parseInvCode,
renderInvCode,
Invitation (..),
projectId,
invitingUser,
invitedEmail,
invitationTime,
acceptanceTime,
)
where
parseInvCode t = do
code <- B64.decodeBase64 . encodeUtf8 $ t
if BS.length code == 32
then Right $ InvitationCode code
else Left "Invitation code appears to be invalid."
parseInvCode t =
InvitationCode <$> (B64.decodeBase64 . encodeUtf8 $ t)