diff --git a/appview/db/db.go b/appview/db/db.go index f5f6f4c7..e4312890 100644 --- a/appview/db/db.go +++ b/appview/db/db.go @@ -21,14 +21,15 @@ func Make(dbPath string) (*DB, error) { domain text not null unique, did text not null, secret text not null, - created integer default (strftime('%s', 'now')), - registered integer); + created text not null default (strftime('%Y-%m-%dT%H:%M:%SZ', 'now')), + registered text + ); create table if not exists public_keys ( id integer primary key autoincrement, did text not null, name text not null, key text not null, - created integer default (strftime('%s', 'now')), + created text not null default (strftime('%Y-%m-%dT%H:%M:%SZ', 'now')), unique(did, name, key) ); create table if not exists repos ( @@ -36,7 +37,7 @@ func Make(dbPath string) (*DB, error) { did text not null, name text not null, knot text not null, - created integer default (strftime('%s', 'now')), + created text not null default (strftime('%Y-%m-%dT%H:%M:%SZ', 'now')), unique(did, name, knot) ); `) diff --git a/appview/db/pubkeys.go b/appview/db/pubkeys.go index f2fb4db1..cf5fec13 100644 --- a/appview/db/pubkeys.go +++ b/appview/db/pubkeys.go @@ -21,16 +21,16 @@ type PublicKey struct { Did string `json:"did"` Key string `json:"key"` Name string `json:"name"` - Created time.Time + Created *time.Time } func (p PublicKey) MarshalJSON() ([]byte, error) { type Alias PublicKey return json.Marshal(&struct { - Created int64 `json:"created"` + Created string `json:"created"` *Alias }{ - Created: p.Created.Unix(), + Created: p.Created.Format(time.RFC3339), Alias: (*Alias)(&p), }) } @@ -46,11 +46,12 @@ func (d *DB) GetAllPublicKeys() ([]PublicKey, error) { for rows.Next() { var publicKey PublicKey - var createdAt *int64 + var createdAt string if err := rows.Scan(&publicKey.Key, &publicKey.Name, &publicKey.Did, &createdAt); err != nil { return nil, err } - publicKey.Created = time.Unix(*createdAt, 0) + createdAtTime, _ := time.Parse(time.RFC3339, createdAt) + publicKey.Created = &createdAtTime keys = append(keys, publicKey) } @@ -72,11 +73,12 @@ func (d *DB) GetPublicKeys(did string) ([]PublicKey, error) { for rows.Next() { var publicKey PublicKey - var createdAt *int64 + var createdAt string if err := rows.Scan(&publicKey.Did, &publicKey.Key, &publicKey.Name, &createdAt); err != nil { return nil, err } - publicKey.Created = time.Unix(*createdAt, 0) + createdAtTime, _ := time.Parse(time.RFC3339, createdAt) + publicKey.Created = &createdAtTime keys = append(keys, publicKey) } diff --git a/appview/db/registration.go b/appview/db/registration.go index d9dab6e7..c82e100c 100644 --- a/appview/db/registration.go +++ b/appview/db/registration.go @@ -44,19 +44,18 @@ func (d *DB) RegistrationsByDid(did string) ([]Registration, error) { } for rows.Next() { - var createdAt *int64 - var registeredAt *int64 + var createdAt *string + var registeredAt *string var registration Registration err = rows.Scan(®istration.Domain, ®istration.ByDid, &createdAt, ®isteredAt) if err != nil { log.Println(err) } else { - createdAtTime := time.Unix(*createdAt, 0) - + createdAtTime, _ := time.Parse(time.RFC3339, *createdAt) var registeredAtTime *time.Time if registeredAt != nil { - x := time.Unix(*registeredAt, 0) + x, _ := time.Parse(time.RFC3339, *registeredAt) registeredAtTime = &x } @@ -71,8 +70,8 @@ func (d *DB) RegistrationsByDid(did string) ([]Registration, error) { // returns registered status, did of owner, error func (d *DB) RegistrationByDomain(domain string) (*Registration, error) { - var createdAt *int64 - var registeredAt *int64 + var createdAt *string + var registeredAt *string var registration Registration err := d.db.QueryRow(` @@ -88,10 +87,10 @@ func (d *DB) RegistrationByDomain(domain string) (*Registration, error) { } } - createdAtTime := time.Unix(*createdAt, 0) + createdAtTime, _ := time.Parse(time.RFC3339, *createdAt) var registeredAtTime *time.Time if registeredAt != nil { - x := time.Unix(*registeredAt, 0) + x, _ := time.Parse(time.RFC3339, *registeredAt) registeredAtTime = &x } @@ -156,7 +155,7 @@ func (d *DB) GetRegistrationKey(domain string) (string, error) { func (d *DB) Register(domain string) error { _, err := d.db.Exec(` update registrations - set registered = strftime('%s', 'now') + set registered = strftime('%Y-%m-%dT%H:%M:%SZ', 'now') where domain = ?; `, domain) diff --git a/appview/db/repos.go b/appview/db/repos.go index 22851b22..fa09fb46 100644 --- a/appview/db/repos.go +++ b/appview/db/repos.go @@ -1,10 +1,12 @@ package db +import "time" + type Repo struct { Did string Name string Knot string - Created *int64 + Created *time.Time } func (d *DB) GetAllReposByDid(did string) ([]Repo, error) { @@ -18,11 +20,12 @@ func (d *DB) GetAllReposByDid(did string) ([]Repo, error) { for rows.Next() { var repo Repo - var createdAt *int64 + var createdAt string if err := rows.Scan(&repo.Did, &repo.Name, &repo.Knot, &createdAt); err != nil { return nil, err } - repo.Created = createdAt + createdAtTime, _ := time.Parse(time.RFC3339, createdAt) + repo.Created = &createdAtTime repos = append(repos, repo) } @@ -37,11 +40,13 @@ func (d *DB) GetRepo(did, name string) (*Repo, error) { var repo Repo row := d.db.QueryRow(`select did, name, knot, created from repos where did = ? and name = ?`, did, name) - var createdAt *int64 + + var createdAt string if err := row.Scan(&repo.Did, &repo.Name, &repo.Knot, &createdAt); err != nil { return nil, err } - repo.Created = createdAt + createdAtTime, _ := time.Parse(time.RFC3339, createdAt) + repo.Created = &createdAtTime return &repo, nil } diff --git a/appview/state/middleware.go b/appview/state/middleware.go index 607662f5..22744e8f 100644 --- a/appview/state/middleware.go +++ b/appview/state/middleware.go @@ -34,6 +34,7 @@ func AuthMiddleware(s *State) Middleware { expiry, err := time.Parse(time.RFC3339, expiryStr) if err != nil { log.Println("invalid expiry time", err) + http.Redirect(w, r, "/login", http.StatusTemporaryRedirect) return } pdsUrl := session.Values[appview.SessionPds].(string) diff --git a/knotserver/db/init.go b/knotserver/db/init.go index 06241349..c27f948c 100644 --- a/knotserver/db/init.go +++ b/knotserver/db/init.go @@ -25,7 +25,7 @@ func Setup(dbPath string) (*DB, error) { id integer primary key autoincrement, did text not null, key text not null, - created timestamp default current_timestamp, + created text not null default (strftime('%Y-%m-%dT%H:%M:%SZ', 'now')), unique(did, key), foreign key (did) references known_dids(did) on delete cascade ); @@ -35,7 +35,7 @@ func Setup(dbPath string) (*DB, error) { did text not null, name text not null, description text not null, - created timestamp default current_timestamp, + created text not null default (strftime('%Y-%m-%dT%H:%M:%SZ', 'now')), unique(did, name) ); diff --git a/knotserver/db/pubkeys.go b/knotserver/db/pubkeys.go index d1b20176..d7735113 100644 --- a/knotserver/db/pubkeys.go +++ b/knotserver/db/pubkeys.go @@ -30,7 +30,7 @@ func (d *DB) AddPublicKeyFromRecord(did string, recordIface map[string]interface func (d *DB) AddPublicKey(pk PublicKey) error { if pk.Created == "" { - pk.Created = time.Now().Format("2006-01-02 15:04:05.99999999 -0700 MST m=-0000.000000000") + pk.Created = time.Now().Format(time.RFC3339) } query := `insert or ignore into public_keys (did, key, created) values (?, ?, ?)`