mirror of
https://github.com/Mezeporta/Erupe.git
synced 2025-12-14 16:04:38 +01:00
implement return course
This commit is contained in:
9
patch-schema/return.sql
Normal file
9
patch-schema/return.sql
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
BEGIN;
|
||||||
|
|
||||||
|
ALTER TABLE IF EXISTS public.users
|
||||||
|
ADD COLUMN IF NOT EXISTS last_login timestamp without time zone;
|
||||||
|
|
||||||
|
ALTER TABLE IF EXISTS public.users
|
||||||
|
ADD COLUMN IF NOT EXISTS return_expires timestamp without time zone;
|
||||||
|
|
||||||
|
END;
|
||||||
@@ -47,7 +47,7 @@ func (s *Server) registerDBAccount(username string, password string) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = s.db.Exec("INSERT INTO users (username, password) VALUES ($1, $2)", username, string(passwordHash))
|
_, err = s.db.Exec("INSERT INTO users (username, password, return_expires) VALUES ($1, $2, $3)", username, string(passwordHash), time.Now().Add(time.Hour*24*30))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -95,6 +95,23 @@ func (s *Server) getCharactersForUser(uid int) ([]character, error) {
|
|||||||
return characters, nil
|
return characters, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *Server) getReturnExpiry(uid int) time.Time {
|
||||||
|
var returnExpiry, lastLogin time.Time
|
||||||
|
s.db.Get(&lastLogin, "SELECT COALESCE(last_login, now()) FROM users WHERE id=$1", uid)
|
||||||
|
if time.Now().Add((time.Hour * 24) * -90).After(lastLogin) {
|
||||||
|
returnExpiry = time.Now().Add(time.Hour * 24 * 30)
|
||||||
|
s.db.Exec("UPDATE users SET return_expires=$1 WHERE id=$2", returnExpiry, uid)
|
||||||
|
} else {
|
||||||
|
err := s.db.Get(&returnExpiry, "SELECT return_expires FROM users WHERE id=$1", uid)
|
||||||
|
if err != nil {
|
||||||
|
returnExpiry = time.Now()
|
||||||
|
s.db.Exec("UPDATE users SET return_expires=$1 WHERE id=$2", returnExpiry, uid)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
s.db.Exec("UPDATE users SET last_login=$1 WHERE id=$2", time.Now(), uid)
|
||||||
|
return returnExpiry
|
||||||
|
}
|
||||||
|
|
||||||
func (s *Server) getLastCID(uid int) uint32 {
|
func (s *Server) getLastCID(uid int) uint32 {
|
||||||
var lastPlayed uint32
|
var lastPlayed uint32
|
||||||
_ = s.db.QueryRow("SELECT last_character FROM users WHERE id=$1", uid).Scan(&lastPlayed)
|
_ = s.db.QueryRow("SELECT last_character FROM users WHERE id=$1", uid).Scan(&lastPlayed)
|
||||||
|
|||||||
@@ -28,6 +28,8 @@ func randSeq(n int) string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *Session) makeSignInResp(uid int) []byte {
|
func (s *Session) makeSignInResp(uid int) []byte {
|
||||||
|
returnExpiry := s.server.getReturnExpiry(uid)
|
||||||
|
|
||||||
// Get the characters from the DB.
|
// Get the characters from the DB.
|
||||||
chars, err := s.server.getCharactersForUser(uid)
|
chars, err := s.server.getCharactersForUser(uid)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -115,15 +117,7 @@ func (s *Session) makeSignInResp(uid int) []byte {
|
|||||||
bf.WriteUint8(0x00)
|
bf.WriteUint8(0x00)
|
||||||
bf.WriteUint32(0xCA110001)
|
bf.WriteUint32(0xCA110001)
|
||||||
bf.WriteUint32(0x4E200000)
|
bf.WriteUint32(0x4E200000)
|
||||||
|
bf.WriteUint32(uint32(returnExpiry.Unix()))
|
||||||
returning := false
|
|
||||||
// return course end time
|
|
||||||
if returning {
|
|
||||||
bf.WriteUint32(uint32(channelserver.Time_Current_Adjusted().Add(30 * 24 * time.Hour).Unix()))
|
|
||||||
} else {
|
|
||||||
bf.WriteUint32(0)
|
|
||||||
}
|
|
||||||
|
|
||||||
bf.WriteUint32(0x00000000)
|
bf.WriteUint32(0x00000000)
|
||||||
bf.WriteUint32(0x0A5197DF)
|
bf.WriteUint32(0x0A5197DF)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user