USP_CLIENTUSERSCIPHER_MATCH_CIPHER
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CLIENTUSERSID | int | IN | |
@CIPHER | varchar(255) | IN |
Definition
Copy
CREATE procedure dbo.USP_CLIENTUSERSCIPHER_MATCH_CIPHER
(
@CLIENTUSERSID int,
@CIPHER varchar(255)
)
as
begin
set nocount on;
declare @OLD_CIPHER nvarchar(4000)
declare @IsValid BIT
if exists (select 1 from INSTALLATIONINFO where ISHOSTED = 1)
begin
-- Check Admin Rights logic, this is same as Property HasAdminRights() of BBWebPrincipal.vb
-- For Me.IsAdmin
declare @ISADMIN bit = 0;
declare @HASTASK bit;
declare @COUNTTASK int = 0;
declare @COUNTTYPETASK int = 0;
select @ISADMIN = 1 From dbo.ClientUsers
where Id = @CLIENTUSERSID
and (InternalUser = 1 OR IsSupervisor = 1)
if(@ISADMIN = 0)
begin
--For Me.User.Tasks.HasAnyTasks
select @COUNTTASK = Count(TASKGUID) from [dbo].[UFN_CLIENTUSERS_TASKS](@CLIENTUSERSID, null)
if(@COUNTTASK = 0)
begin
select @COUNTTYPETASK = Count(TASKGUID) from dbo.[UFN_CLIENTUSERS_CONTENTTYPE_TASKS](@CLIENTUSERSID, null)
end
if(@COUNTTASK > 0 or @COUNTTYPETASK > 0)
begin
set @HASTASK = 1;
end
end
end
if(@ISADMIN = 1 or @HASTASK = 1)
begin
set @ISVALID =0
end
else
begin
select @OLD_CIPHER = CIPHER from dbo.CLIENTUSERSCIPHER where CLIENTUSERSID = @CLIENTUSERSID;
--CASE 1: WHEN USER LOGIN AFTER CHANGES TO SALTEDPASSWORD THEN MATCH ACCORDING TO OLD PROCESS, IF SUCCESSFULLY VERIFIED THEN UPDATE IT'S CIPHER
if (@OLD_CIPHER not like '$2a$%')
begin
declare @HASH_VAL as nvarchar(600)
--Open key to get plan text value
exec dbo.USP_GET_KEY_ACCESS;
select @HASH_VAL =coalesce(convert(varchar(255),DECRYPTBYKEY(CIPHER)), '')
from dbo.CLIENTUSERSCIPHER where CLIENTUSERSID = @CLIENTUSERSID;
--Migrate password for this user
exec dbo.USP_CLIENTUSERSCIPHER_INSERTORUPDATE_CIPHER @CLIENTUSERSID,@HASH_VAL
--migrate history for user
declare @CHANGEAGENTID? uniqueidentifier;
?? exec dbo.[USP_CHANGEAGENT_GETORCREATECHANGEAGENT] @CHANGEAGENTID output;
update CUCH set CUCH.CIPHER = dbo.[UFN_HASHBYTES_GET](coalesce(convert(varchar(255),DECRYPTBYKEY(CUCH.CIPHER)), '')) ,
CUCH.CHANGEDBYID = @CHANGEAGENTID,???????????????????????
??????????????????????? CUCH.datechanged=GETDATE()
from dbo.CLIENTUSERSCIPHERHISTORY CUCH where CUCH.CLIENTUSERSID =@CLIENTUSERSID and CUCH.CIPHER not like '$2a$%' ;
exec dbo.USP_CLOSE_KEY_ACCESS;
if @HASH_VAL is not null and @HASH_VAL <> '' and @CIPHER = @HASH_VAL
begin
set @IsValid =1
End
else
begin
set @IsValid =0
end
end
else
--CASE 2: WHEN USER LOGIN AFTER UPRGADE TO SALTED PASSWORD MATCH AS NEW PROCESS
begin
--Check if Chpher is null
if(@CIPHER is null)
begin
--Cipher cannot be null
set @IsValid =0;
end
else
begin
-- match hash value
exec @IsValid = UFN_CIPHER_MATCH @CIPHER, @OLD_CIPHER
end
end
end
if @IsValid =1
begin
select 1 as IsValid
end
else
begin
select 0 as IsValid
end
end