Files
ris-backend-go/services/auth/auth.store.go
2024-12-09 09:51:19 +07:00

78 lines
1.8 KiB
Go

package auth
import (
"context"
"time"
"sismedika.com/sas/westone/types"
"sismedika.com/sas/westone/utils"
)
func (s *Store) SignInWestone(email string, password string) (*types.User, error) {
user := new(types.User)
qry := `
SELECT
M_UserID,
M_UserName,
M_UserGroupDashboard,
IFNULL(M_UserFullName, "") as M_StaffName,
10000000 as time_autologout
FROM m_user
JOIN m_usergroup ON M_UserM_UserGroupID = M_UserGroupID
LEFT JOIN m_staff on M_UserM_StaffID = M_StaffID
WHERE M_UserName = ? AND M_UserPassword = ? AND M_UserIsActive = 'Y'
`
if err := s.db.Get(user, qry, email, password); err != nil {
return nil, &utils.LogError{
Code: "151",
TraceID: utils.RandomTraceID(15),
Type: "AUTH",
Params: "email: " + email,
Query: "-",
Message: err.Error(),
TimeStamp: time.Now().Format("2006-01-02 15:04:05"),
}
}
user.Type_Akun = "westone"
return user, nil
}
func (s *Store) LogSignIn(email string, ip string, status string, tipe string, provider string) error {
tx, err := s.db.BeginTxx(context.Background(), nil)
if err != nil {
return err
}
defer func() {
if err != nil {
tx.Rollback()
}
}()
logval := types.LogLogin{
LogLoginMUserEmail: email,
LogLoginDateTime: time.Now().Format("2006-01-02 15:04:05"),
LogLoginIP: ip,
LogLoginType: tipe,
LogLoginStatus: status,
LogLoginLogin: provider,
}
qry := `INSERT INTO log_login
(Log_LoginM_UserEmail, Log_LoginDateTime, Log_LoginIP, Log_LoginType, Log_LoginStatus, Log_LoginLogin)
VALUES (:Log_LoginM_UserEmail, :Log_LoginDateTime, :Log_LoginIP, :Log_LoginType, :Log_LoginStatus, :Log_LoginLogin)`
_, err = tx.NamedExec(qry, logval)
if err != nil {
return err
}
if err = tx.Commit(); err != nil {
return err
}
return nil
}