-
Notifications
You must be signed in to change notification settings - Fork 0
/
init.go
64 lines (50 loc) · 988 Bytes
/
init.go
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
// coalesce/models/init.go
package models
import (
"database/sql"
"io/ioutil"
_ "github.com/mattn/go-sqlite3"
"github.com/nytopop/coalesce/util"
)
var sqdb *sql.DB
func CloseDB() {
sqdb.Close()
}
func InitDB(dbfile, initfile string) error {
var err error
sqdb, err = sql.Open("sqlite3", dbfile)
if err != nil {
return err
}
s, err := ioutil.ReadFile(initfile)
if err != nil {
return err
}
if _, err := sqdb.Exec(string(s)); err != nil {
return err
}
// Create admin user with default credentials if it doesn't exist
admInDB, err := QueryUserExists("admin")
if err != nil {
return err
}
if !admInDB {
salt, err := util.GenerateSalt()
if err != nil {
return err
}
token, err := util.ComputeToken(salt, "coalesce")
if err != nil {
return err
}
adm := SQLUser{
Name: "admin",
Salt: salt,
Token: token,
AccessLevel: 3,
}
err = WriteUser(adm)
}
// we return err whether or not nil
return err
}