step 3 : login absensi fix, return graphql staff
This commit is contained in:
@@ -1,9 +1,6 @@
|
||||
package staff
|
||||
|
||||
import (
|
||||
"crypto/rand"
|
||||
"crypto/rsa"
|
||||
"crypto/x509"
|
||||
"database/sql"
|
||||
"encoding/pem"
|
||||
"fmt"
|
||||
@@ -13,6 +10,7 @@ import (
|
||||
"com.sismedika.com.absensi/graph/model"
|
||||
"com.sismedika.com.absensi/pkg/config"
|
||||
db "com.sismedika.com.absensi/pkg/database"
|
||||
"com.sismedika.com.absensi/pkg/jwt"
|
||||
)
|
||||
|
||||
// diambil dari graph/model/struct nya Staff
|
||||
@@ -22,7 +20,8 @@ type Staff model.Staff
|
||||
// email string, id_google_sign_in string = parameter inputan dari flutter nanti
|
||||
// *model.Staff, error = output yang dihasilkan, jika tidak error return *model.Staff namun jika error maka sebelah kanan nya yaitu
|
||||
// error
|
||||
func (staff *Staff) LoginAttendance(email string, id_google_sign_in string, publickey string) (*model.Staff, error) {
|
||||
|
||||
func (staff *Staff) LoginAttendance(email string, id_google_sign_in string) (*model.Staff, error) {
|
||||
|
||||
// inisialisasi
|
||||
var err error
|
||||
@@ -46,25 +45,42 @@ func (staff *Staff) LoginAttendance(email string, id_google_sign_in string, publ
|
||||
return nil, fmt.Errorf(("INTERNAL_SERVER_ERROR"))
|
||||
}
|
||||
|
||||
// Decode the RSA private key
|
||||
priv, err := x509.ParsePKCS1PrivateKey(block.Bytes)
|
||||
// generate token
|
||||
// token yg kiri merupakan output
|
||||
// _ merupakan value yg tidak digunakan dalam hal ini expired bisa di cek di fungsi jwt.GenerateToken
|
||||
// err merupakan kondisi ketika error return nya apa
|
||||
|
||||
token, _, err := jwt.GenerateToken(email, id_google_sign_in)
|
||||
if err != nil {
|
||||
log.Printf("bad private key: %s", err)
|
||||
return nil, fmt.Errorf(("INTERNAL_SERVER_ERROR"))
|
||||
return nil, err
|
||||
}
|
||||
|
||||
passEncrypted, err := rsa.EncryptPKCS1v15(rand.Reader, &priv.PublicKey, []byte(publickey))
|
||||
// jika sukses generate token maka update
|
||||
// M_StaffToken & M_StaffIsLogin
|
||||
|
||||
qx := `UPDATE m_staff
|
||||
SET
|
||||
M_StaffToken = ?,
|
||||
M_StaffIsLogin = 'Y'
|
||||
WHERE
|
||||
M_StaffIsActive = 'Y'
|
||||
AND M_StaffEmail = ?
|
||||
AND M_StaffIDGoogleSignIn = ?
|
||||
`
|
||||
// log sql untuk mengetahui query yg akan dieksekusi
|
||||
db.LogSQL(qx)
|
||||
|
||||
// cek kondisi
|
||||
// _ merupakan kondisi true namun value tidak digunakan sbg cek
|
||||
// error kondisi false dan error digunakan
|
||||
_, err = db.Handle.Exec(
|
||||
qx,
|
||||
token,
|
||||
email,
|
||||
id_google_sign_in)
|
||||
|
||||
if err != nil {
|
||||
log.Printf("decrypt: %s\n", err)
|
||||
return nil, fmt.Errorf(("DECRYPTION_FAILED"))
|
||||
}
|
||||
|
||||
if passEncrypted != nil {
|
||||
// log.Printf("hasil variable passEncrypted: %s\n", passEncrypted)
|
||||
}
|
||||
|
||||
if priv != nil {
|
||||
// log.Printf("hasil variable priv: %s\n", priv)
|
||||
return &ret, fmt.Errorf("UPDATE_TOKEN_FAILED")
|
||||
}
|
||||
|
||||
// data yang akan di tampilkan
|
||||
@@ -109,7 +125,7 @@ func (staff *Staff) LoginAttendance(email string, id_google_sign_in string, publ
|
||||
// check data
|
||||
|
||||
if err != nil {
|
||||
log.Printf("Error employee_id select: %v", err)
|
||||
log.Printf("Error m_staff select: %v", err)
|
||||
log.Printf("Executing query: %s\n", q)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user