@ -5,6 +5,9 @@
* /
package id.amigogroup.posterminal.keamanan ;
import com.fasterxml.jackson.databind.JsonNode ;
import com.fasterxml.jackson.databind.ObjectMapper ;
import com.fasterxml.jackson.databind.node.ObjectNode ;
import id.amigogroup.posterminal.SystemValue ;
import id.amigogroup.posterminal.api.AmigoPosRx ;
import id.amigogroup.posterminal.model.Karyawan ;
@ -15,9 +18,7 @@ import io.reactivex.Observer;
import io.reactivex.disposables.Disposable ;
import java.io.IOException ;
import java.net.HttpURLConnection ;
import java.net.SocketTimeoutException ;
import java.net.URL ;
import java.net.UnknownHostException ;
import java.util.ResourceBundle ;
import java.util.logging.Level ;
import java.util.logging.Logger ;
@ -33,6 +34,7 @@ import javafx.scene.control.TextField;
import javafx.scene.image.Image ;
import javafx.scene.layout.AnchorPane ;
import javafx.stage.Stage ;
import okhttp3.ResponseBody ;
import retrofit2.HttpException ;
/ * *
@ -73,33 +75,64 @@ public class FormLoginController implements Initializable {
@FXML
public void btnLoginOnAction ( ActionEvent event ) {
if ( ! fldNamaPengguna . getText ( ) . equals ( "" ) ) {
Observable < Karyawan > karyawanObs = posRx . getKaryawanByNik ( fldNamaPengguna . getText ( ) ) ;
karyawanObs . subscribe ( karyawanLoginObserver ) ;
if ( ! fldNamaPengguna . getText ( ) . equals ( "" ) & & ! fldKataSandi . getText ( ) . equals ( "" ) ) {
String nik = fldNamaPengguna . getText ( ) ;
Observable . zip (
posRx . getKaryawanByNik ( fldNamaPengguna . getText ( ) ) ,
posRx . loginKaryawanByNikPin ( nik , fldKataSandi . getText ( ) ) ,
( Karyawan k , ResponseBody response ) - > {
return new KaryawanLogin ( k , response ) ;
} ) . subscribe ( karyawanLoginObserver ) ;
} else {
Alert alert = AlertUtil . getAlertWarning (
"Data Login Tidak Lengkap" ,
"Kolom username dan password harus terisi" ) ;
alert . initOwner ( apMain . getScene ( ) . getWindow ( ) ) ;
alert . show ( ) ;
}
}
Observer < Karyawan > karyawanLoginObserver = new Observer < > ( ) {
Observer < Karyawan Login > karyawanLoginObserver = new Observer < > ( ) {
@Override
public void onSubscribe ( Disposable dspsbl ) {
}
@Override
public void onNext ( Karyawan k ) {
public void onNext ( Karyawan Login k ) {
//kasir, Asko produk, Asko SDM, Pemko
if ( k ! = null & & Fucout . isAllowedLogin ( k . getIdPekerjaan ( ) ) ) {
SystemValue. karyawanLogin = k ;
if ( k ! = null & & Fucout . isAllowedLogin ( k . karyawan. getIdPekerjaan( ) ) ) {
ObjectMapper mapper = new ObjectMapper ( ) ;
try {
JsonNode jsonNode = mapper . readTree ( k . result . string ( ) ) ;
ObjectNode objectNode = jsonNode . deepCopy ( ) ;
if ( objectNode . get ( "status" ) . asBoolean ( ) ) {
SystemValue . karyawanLogin = k . karyawan ;
generateNewWindow ( "/fxml/FormUtama.fxml" ) . show ( ) ;
Stage thisStage = ( Stage ) apMain . getScene ( ) . getWindow ( ) ;
//close current stage
thisStage . hide ( ) ;
}
else {
Alert alert = AlertUtil . getAlertError (
AlertUtil . ERROR_KARYAWAN_TIDAK_BOLEH_AKSES_TITLE ,
objectNode . get ( "message" ) . asText ( ) ) ;
alert . initOwner ( apMain . getScene ( ) . getWindow ( ) ) ;
alert . show ( ) ;
}
} catch ( IOException ex ) {
Alert alert = AlertUtil . getAlertError (
AlertUtil . ERROR_KARYAWAN_TIDAK_BOLEH_AKSES_TITLE ,
"Terjadi error yang tidak diduga sehingga karyawan tidak boleh mengakses." ) ;
alert . initOwner ( ( Stage ) apMain . getScene ( ) . getWindow ( ) ) ;
alert . show ( ) ;
Logger . getLogger ( FormLoginController . class . getName ( ) ) . log ( Level . SEVERE , null , ex ) ;
}
} else {
Alert alert = AlertUtil . getAlertError (
"Error: Karyawan Tidak Boleh Akses" ,
AlertUtil . ERROR_KARYAWAN_TIDAK_BOLEH_AKSES_TITLE ,
"Karyawan dengan nomor tersebut tidak berwenang untuk mengakses aplikasi ini." ) ;
alert . initOwner ( ( Stage ) apMain . getScene ( ) . getWindow ( ) ) ;
alert . show ( ) ;
@ -126,4 +159,14 @@ public class FormLoginController implements Initializable {
public void onComplete ( ) {
}
} ;
private class KaryawanLogin {
private Karyawan karyawan ;
private ResponseBody result ;
public KaryawanLogin ( Karyawan karyawan , ResponseBody result ) {
this . karyawan = karyawan ;
this . result = result ;
}
}
}