USP_APPUSERPASSWORDRESET_GETBYTOKENANDCLEANUP
Parameters
| Parameter | Parameter Type | Mode | Description | 
|---|---|---|---|
| @TOKEN | nvarchar(50) | IN | |
| @EXPIREHOURS | int | IN | |
| @CHANGEAGENTID | uniqueidentifier | IN | 
Definition
 Copy 
                                    
CREATE procedure dbo.USP_APPUSERPASSWORDRESET_GETBYTOKENANDCLEANUP
(
  @TOKEN nvarchar(50), 
  @EXPIREHOURS int,
  @CHANGEAGENTID uniqueidentifier
)
as
begin
  if @CHANGEAGENTID is null
    exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
  declare @contextCache varbinary(128);
  /* cache current context information */
  set @contextCache = CONTEXT_INFO();
  /* set CONTEXT_INFO to @CHANGEAGENTID */
  if not @CHANGEAGENTID is null
    set CONTEXT_INFO @CHANGEAGENTID;
  -- Delete all expired reset requests.
  delete from dbo.APPUSERPASSWORDRESET where DATEADDED < dateadd(hour, -@EXPIREHOURS, getdate());
  /* reset CONTEXT_INFO to previous value */
  if not @contextCache is null
    set CONTEXT_INFO @contextCache;
  declare @WSFEDERATIONENABLED bit;
  set @WSFEDERATIONENABLED = case when exists(select top 1 1 from dbo.CONDITIONSETTING where NAME = 'WSFederation') then 1 else 0 end;
  -- Open the symmetric key for encryption
  exec dbo.USP_GET_KEY_ACCESS;
  select
    APPUSERPASSWORDRESET.ID,
    APPUSERPASSWORDRESET.APPUSERID,
    APPUSER.USERSID
  from dbo.APPUSERPASSWORDRESET
  inner join dbo.APPUSER on APPUSER.ID = APPUSERPASSWORDRESET.APPUSERID
  left outer join dbo.APPUSERCLAIMS on APPUSER.ID = APPUSERCLAIMS.APPUSERID
  where /*APPUSERPASSWORDRESET.TOKENINDEX = dbo.UFN_GET_MAC_FOR_TEXT(@TOKEN, 'dbo.APPUSERPASSWORDRESET')
    and*/ DecryptByKey(TOKEN) = @TOKEN collate SQL_Latin1_General_CP1_CS_AS -- case-sensitive
    and (@WSFEDERATIONENABLED = 0 or (@WSFEDERATIONENABLED = 1 and APPUSERCLAIMS.NAMEIDENTIFIER is null));
  close symmetric key sym_BBInfinity;
end