package libfeatures

import (
	"time"

	"be.ems/lib/dborm"
	"be.ems/lib/oauth"
	libConfig "be.ems/restagent/config"
	"be.ems/src/framework/logger"
	"be.ems/src/framework/redis"
)

// SessionToken 设置登录会话-兼容旧登录方式
func SessionToken(username, sourceAddr string) bool {
	// token, _ := redis.Get("", "session_token")
	// if token != "" {
	// 	se, err := dborm.XormUpdateSessionShakeTime(token)
	// 	if se.AccountId != username || err != nil {
	// 		// 过期时间单位秒 配置1800是半小时
	// 		expireTime := time.Duration(int64(libConfig.GetExpiresFromConfig())) * time.Second
	// 		redis.SetByExpire("", "session_token", token, expireTime)
	// 		return true
	// 	}
	// }
	// 不管原先的登录情况，直接插入写入覆盖redis中session
	//
	token := oauth.GenRandToken("omc") // Generate new token to session ID
	affected, err := dborm.XormInsertSession(username, sourceAddr, token, libConfig.GetExpiresFromConfig(), libConfig.GetYamlConfig().Auth.Session)
	if err != nil {
		logger.Errorf("SessionToken XormInsertSession err %v", err)
	}
	if affected >= 1 {
		// 过期时间单位秒 配置1800是半小时
		expireTime := time.Duration(int64(libConfig.GetExpiresFromConfig())) * time.Second
		redis.SetByExpire("", "session_token", token, expireTime)
		return true
	}
	return false
}
