summaryrefslogtreecommitdiffstats
path: root/models/login.go
blob: 6d9e54943f7c013a81f03b58597c83e36df6d091 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package models

import (
	"encoding/json"
	"time"

	"github.com/go-xorm/core"
	"github.com/gogits/gogs/modules/auth/ldap"
)

/*const (
	LT_PLAIN = iota + 1
	LT_LDAP
	LT_SMTP
)*/

var _ core.Conversion = &LDAPConfig{}

type LDAPConfig struct {
	ldap.Ldapsource
}

// implement
func (cfg *LDAPConfig) FromDB(bs []byte) error {
	return json.Unmarshal(bs, &cfg.Ldapsource)
}

func (cfg *LDAPConfig) ToDB() ([]byte, error) {
	return json.Marshal(cfg.Ldapsource)
}

type LoginSource struct {
	Id        int64
	Type      int
	Name      string
	IsActived bool
	Cfg       core.Conversion `xorm:"TEXT"`
	Created   time.Time       `xorm:"created"`
	Updated   time.Time       `xorm:"updated"`
}

func GetAuths() ([]*LoginSource, error) {
	var auths = make([]*LoginSource, 0)
	err := orm.Find(&auths)
	return auths, err
}

func AddLDAPSource(name string, cfg *LDAPConfig) error {
	_, err := orm.Insert(&LoginSource{Type: LT_LDAP,
		Name:      name,
		IsActived: true,
		Cfg:       cfg,
	})
	return err
}

func UpdateLDAPSource(id int64, name string, cfg *LDAPConfig) error {
	_, err := orm.AllCols().Id(id).Update(&LoginSource{
		Id:   id,
		Type: LT_LDAP,
		Name: name,
		Cfg:  cfg,
	})
	return err
}

func DelLoginSource(id int64) error {
	_, err := orm.Id(id).Delete(&LoginSource{})
	return err
}