aboutsummaryrefslogtreecommitdiffstats
path: root/bridge/core/auth/login.go
diff options
context:
space:
mode:
authorMichael Muré <batolettre@gmail.com>2020-02-12 18:32:01 +0100
committerMichael Muré <batolettre@gmail.com>2020-02-12 23:37:57 +0100
commit34083de0df5187caed3f788c1dcedf7196180206 (patch)
tree62f550b068f7dea989cfd232385181b5f6eba105 /bridge/core/auth/login.go
parent9f3618d886d461ea806468a8c690a4a303d66d9b (diff)
downloadgit-bug-34083de0df5187caed3f788c1dcedf7196180206.tar.gz
auth: refactor and introduce Login and LoginPassword, salt IDs
Diffstat (limited to 'bridge/core/auth/login.go')
-rw-r--r--bridge/core/auth/login.go67
1 files changed, 67 insertions, 0 deletions
diff --git a/bridge/core/auth/login.go b/bridge/core/auth/login.go
new file mode 100644
index 00000000..ea74835a
--- /dev/null
+++ b/bridge/core/auth/login.go
@@ -0,0 +1,67 @@
+package auth
+
+import (
+ "crypto/sha256"
+ "fmt"
+
+ "github.com/MichaelMure/git-bug/entity"
+)
+
+const (
+ configKeyLoginLogin = "login"
+)
+
+var _ Credential = &Login{}
+
+type Login struct {
+ *credentialBase
+ Login string
+}
+
+func NewLogin(target, login string) *Login {
+ return &Login{
+ credentialBase: newCredentialBase(target),
+ Login: login,
+ }
+}
+
+func NewLoginFromConfig(conf map[string]string) (*Login, error) {
+ base, err := newCredentialBaseFromConfig(conf)
+ if err != nil {
+ return nil, err
+ }
+
+ return &Login{
+ credentialBase: base,
+ Login: conf[configKeyLoginLogin],
+ }, nil
+}
+
+func (lp *Login) ID() entity.Id {
+ h := sha256.New()
+ _, _ = h.Write(lp.salt)
+ _, _ = h.Write([]byte(lp.target))
+ _, _ = h.Write([]byte(lp.Login))
+ return entity.Id(fmt.Sprintf("%x", h.Sum(nil)))
+}
+
+func (lp *Login) Kind() CredentialKind {
+ return KindLogin
+}
+
+func (lp *Login) Validate() error {
+ err := lp.credentialBase.validate()
+ if err != nil {
+ return err
+ }
+ if lp.Login == "" {
+ return fmt.Errorf("missing login")
+ }
+ return nil
+}
+
+func (lp *Login) toConfig() map[string]string {
+ return map[string]string{
+ configKeyLoginLogin: lp.Login,
+ }
+}