diff --git a/lib/NGCP/Panel/Controller/API/Admins.pm b/lib/NGCP/Panel/Controller/API/Admins.pm index e3f56f7d50..6d91a4e99e 100644 --- a/lib/NGCP/Panel/Controller/API/Admins.pm +++ b/lib/NGCP/Panel/Controller/API/Admins.pm @@ -1,6 +1,7 @@ package NGCP::Panel::Controller::API::Admins; use NGCP::Panel::Utils::Generic qw(:all); use NGCP::Panel::Utils::UserRole; +use NGCP::Panel::Utils::Auth qw(); use Sipwise::Base; @@ -59,6 +60,15 @@ sub create_item { try { my $pass = delete $resource->{password}; $resource->{auth_mode} ||= 'local'; + if ($resource->{enable_2fa}) { + $resource->{enable_2fa} = 1; + $resource->{otp_secret} = NGCP::Panel::Utils::Auth::create_otp_secret(); + $resource->{show_otp_registration_info} = 1; + } else { + $resource->{enable_2fa} = 0; + $resource->{otp_secret} = undef; + $resource->{show_otp_registration_info} = 0; + } $item = $c->model('DB')->resultset('admins')->create($resource); NGCP::Panel::Utils::Admin::insert_password_journal( $c, $item, $pass diff --git a/lib/NGCP/Panel/Role/API/Admins.pm b/lib/NGCP/Panel/Role/API/Admins.pm index 3b319632c6..c3b34376da 100644 --- a/lib/NGCP/Panel/Role/API/Admins.pm +++ b/lib/NGCP/Panel/Role/API/Admins.pm @@ -210,6 +210,16 @@ sub update_item { } $resource->{auth_mode} ||= 'local'; + if ($resource->{enable_2fa}) { + $resource->{enable_2fa} = 1; + unless ($item->otp_secret) { + $resource->{otp_secret} = NGCP::Panel::Utils::Auth::create_otp_secret(); + $resource->{show_otp_registration_info} = 1; + } + } else { + $resource->{enable_2fa} = 0; + } + $item->update($resource); return $item;