Contrôle d’un profil et son mot de passe
Ce CL donne un exemple d’utilisation de l’API iSeries QSYGETPH
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ /* VERIFICATION D'UN PROFIL ET MOT DE PASSE */ /* ACHTUNG BITTE !!!!!!!!!!!!!! */ /* Les profils concernés doivent avoir le droit : */ /* PUBLIC *USE (utiliser WRKOBJ option 2) */ /* API QSYGETPH, cf : http://publib.boulder.ibm.com/iseires/v5r2/ */ /* ic2924/index.htm?info/apis/QSYGETPH.htm */ /* PARAMETRES : */ /* - &NEWUSR : USERID */ /* - &NEWPWD : mot de passe */ /* - &STS : Statut retourné (' '=OK ; 'X'=PROBLEME) */ PGM PARM(&NEWUSR &NEWPWD &STS) DCL &NEWUSR *CHAR 10 DCL &NEWPWD *CHAR 10 DCL &STS *CHAR 01 DCL VAR(&ERRORCODE) TYPE(*CHAR) LEN(272) DCL VAR(&USERID) TYPE(*CHAR) LEN(10) DCL VAR(&PASSWRD) TYPE(*CHAR) LEN(10) DCL VAR(&HANDLE) TYPE(*CHAR) LEN(12) DCL &ECRAN *CHAR 10 CHGVAR VAR(&STS) VALUE('X') RTVJOBA JOB(&ECRAN) /* Récupère le "handle" du nouvel utilisateur */ CHGVAR VAR(&ERRORCODE) VALUE(X'0110') CHGVAR VAR(&USERID) VALUE(&NEWUSR) CHGVAR VAR(&PASSWRD) VALUE(&NEWPWD) /* V5R3 : faut donner longueur 10 (A en hexadecimal) */ /* et CCSID 65535 (FFFFFFFF) */ CALL QSYGETPH + (&USERID &PASSWRD &HANDLE &ERRORCODE X'0000000A' X'FFFFFFFF') IF COND(%SST(&ERRORCODE 9 7) *EQ 'CPF22E2') THEN(DO) SNDBRKMSG MSG('Mot de passe incorrect') TOMSGQ(&ECRAN) MONMSG CPF0000 GOTO FINPGM ENDDO IF COND(%SST(&ERRORCODE 9 7) *EQ 'CPF22E3') THEN(DO) SNDBRKMSG MSG('Profil ' !! &USERID !! ' désactivé') TOMSGQ(&ECRAN) MONMSG CPF0000 GOTO FINPGM ENDDO IF COND(%SST(&ERRORCODE 9 7) *EQ 'CPF22E4') THEN(DO) SNDBRKMSG MSG('Mot de passe expiré ') TOMSGQ(&ECRAN) MONMSG CPF0000 GOTO FINPGM ENDDO IF COND(%SST(&ERRORCODE 9 7) *EQ 'CPF22E5') THEN(DO) SNDBRKMSG MSG('Pas de mot de passe pour ' !! &USERID) TOMSGQ(&ECRAN) MONMSG CPF0000 GOTO FINPGM ENDDO IF COND(%SST(&ERRORCODE 9 7) *EQ 'CPF22E6') THEN(DO) SNDBRKMSG MSG('Trop de handle générés ') TOMSGQ(&ECRAN) MONMSG CPF0000 GOTO FINPGM ENDDO IF COND(%SST(&ERRORCODE 9 7) *EQ 'CPF22E9') THEN(DO) SNDBRKMSG MSG('Autorité *USE obligatoire sur le profil') TOMSGQ(&ECRAN) MONMSG CPF0000 GOTO FINPGM ENDDO IF COND(%SST(&ERRORCODE 9 7) *EQ 'CPF2203') THEN(DO) SNDBRKMSG MSG('Profil ' !! &USERID !! ' incorrect') TOMSGQ(&ECRAN) MONMSG CPF0000 GOTO FINPGM ENDDO IF COND(%SST(&ERRORCODE 9 7) *EQ 'CPF2204') THEN(DO) SNDBRKMSG MSG('Profil ' !! &USERID !! ' inconnu') TOMSGQ(&ECRAN) MONMSG CPF0000 GOTO FINPGM ENDDO IF COND(%SST(&ERRORCODE 9 7) *EQ 'CPF2213') THEN(DO) SNDBRKMSG MSG('Profil ' !! &USERID !! ' indisponible') TOMSGQ(&ECRAN) MONMSG CPF0000 GOTO FINPGM ENDDO IF COND(%SST(&ERRORCODE 9 7) *EQ 'CPF2225') THEN(DO) SNDBRKMSG MSG('Objet système interne indisponible ') TOMSGQ(&ECRAN) MONMSG CPF0000 GOTO FINPGM ENDDO IF COND(%SST(&ERRORCODE 9 7) *EQ 'CPF3BC7') THEN(DO) SNDBRKMSG MSG('CCSID impossible ') TOMSGQ(&ECRAN ) MONMSG CPF0000 GOTO FINPGM ENDDO IF COND(%SST(&ERRORCODE 9 7) *EQ 'CPF3BDE') THEN(DO) SNDBRKMSG MSG('CCSID non supporté ') TOMSGQ(&ECRAN) MONMSG CPF0000 GOTO FINPGM ENDDO IF COND(%SST(&ERRORCODE 9 7) *EQ 'CPF3C1D') THEN(DO) SNDBRKMSG MSG('Problème longueur paramètre 1 ' !! &USERID) TOMSGQ(&ECRAN) MONMSG CPF0000 GOTO FINPGM ENDDO IF COND(%SST(&ERRORCODE 9 7) *EQ 'CPF3C90') THEN(DO) SNDBRKMSG MSG('Paramètre code erreur non valable ') TOMSGQ(&ECRAN) MONMSG CPF0000 GOTO FINPGM ENDDO IF COND(%SST(&ERRORCODE 9 7) *EQ 'CPF9872') THEN(DO) SNDBRKMSG MSG('Plantage programme de service, voir le dump') TOMSGQ(&ECRAN) MONMSG CPF0000 DMPCLPGM GOTO FINPGM ENDDO /** - - - - - OK : TRAITEMENT POSSIBLE - - - - - - - - - - - - - **/ CHGVAR &STS VALUE(' ') IF COND(%SST(&ERRORCODE 9 7) *EQ ' ') THEN(DO) /* SNDBRKMSG MSG('Profil ' !! &USERID !! ' OK !') TOMSGQ(&ECRAN)*/ /* MONMSG CPF0000 */ GOTO FINPGM ENDDO /** - - - - - - - - - - - - - - - - - - **/ FINPGM: ENDPGM