mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
76 lines
2.3 KiB
ABAP
76 lines
2.3 KiB
ABAP
CLASS zcl_abapgit_password_dialog DEFINITION
|
|
PUBLIC
|
|
FINAL
|
|
CREATE PUBLIC .
|
|
|
|
PUBLIC SECTION.
|
|
|
|
CLASS-METHODS popup
|
|
IMPORTING
|
|
!iv_repo_url TYPE string
|
|
CHANGING
|
|
!cv_user TYPE string
|
|
!cv_pass TYPE string
|
|
RAISING
|
|
zcx_abapgit_exception.
|
|
PROTECTED SECTION.
|
|
PRIVATE SECTION.
|
|
ENDCLASS.
|
|
|
|
|
|
|
|
CLASS zcl_abapgit_password_dialog IMPLEMENTATION.
|
|
|
|
|
|
METHOD popup.
|
|
|
|
DATA: lx_error TYPE REF TO cx_sy_dyn_call_illegal_form.
|
|
|
|
IF zcl_abapgit_ui_factory=>get_frontend_services( )->gui_is_available( ) = abap_true.
|
|
|
|
TRY.
|
|
PERFORM password_popup
|
|
IN PROGRAM (sy-cprog)
|
|
USING iv_repo_url
|
|
CHANGING cv_user cv_pass.
|
|
CATCH cx_sy_dyn_call_illegal_form INTO lx_error.
|
|
" abapGit was called via API and either wrong or no username/password
|
|
" was supplied. It's not possible to call abapGit password popup in
|
|
" this case.
|
|
" See https://docs.abapgit.org/development/api.html#online-repository
|
|
" on how to provide username/password
|
|
zcx_abapgit_exception=>raise_with_text( lx_error ).
|
|
ENDTRY.
|
|
ELSE.
|
|
"Extract user credentials from the environment...
|
|
"Class ZCL_ABAPGIT_DEFAULT_AUTH_INFO is part of https://github.com/abapGit/ADT_Backend.
|
|
"It stores the credentials of a private repository as long as the session exists.
|
|
"Usually this class should belong to abapGit core and a refactoring is recommended.
|
|
"As a temporary solution - and to avoid a DYNPRO_SEND_IN_BACKGROUND dump - a generic
|
|
"call of the getter methods for username and password is implemented by PR#2635.
|
|
TRY.
|
|
CALL METHOD ('ZCL_ABAPGIT_DEFAULT_AUTH_INFO')=>('GET_USER')
|
|
RECEIVING
|
|
rv_user = cv_user.
|
|
CATCH cx_root.
|
|
RETURN.
|
|
ENDTRY.
|
|
TRY.
|
|
CALL METHOD ('ZCL_ABAPGIT_DEFAULT_AUTH_INFO')=>('GET_PASSWORD')
|
|
RECEIVING
|
|
rv_password = cv_pass.
|
|
CATCH cx_root.
|
|
"check if old version with typo in method name exists
|
|
TRY.
|
|
CALL METHOD ('ZCL_ABAPGIT_DEFAULT_AUTH_INFO')=>('GET_PASSOWORD')
|
|
RECEIVING
|
|
rv_password = cv_pass.
|
|
CATCH cx_root.
|
|
RETURN.
|
|
ENDTRY.
|
|
ENDTRY.
|
|
ENDIF.
|
|
|
|
ENDMETHOD.
|
|
ENDCLASS.
|