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 }