kreta/Kreta.DataAccess.Migrations/DBScripts/Database/dev/uspSetPassword.sql
2024-03-13 00:33:46 +01:00

63 lines
2.3 KiB
Transact-SQL

-- ====================================================================================================================
-- Beállítja az aktuális tanévben a megadott felhasználónak a jszavát, majd resultsetben visszaadja.
-- ====================================================================================================================
DROP PROCEDURE IF EXISTS dev.uspSetPassword
GO
CREATE PROCEDURE dev.uspSetPassword
@pIntezmenyAzonositok nvarchar(max) -- Intezmenyek azonosítói, vesszővel elválasztva
,@pFelhasznaloNev nvarchar(50) -- Felhasználónév
,@pJelszo nvarchar(20) = NULL -- Jelszó, ha NULL, akkor generál neki egy 8 karakteres jelszót
AS
BEGIN
DECLARE @Table TABLE (
IntezmenyAzonosito nvarchar(110)
,IntezmenyId int
,TanevId int
,FelhasznaloBelepesId int
,Jelszo nvarchar(8)
)
DECLARE
@felhasznaloBelepesId int
,@jelszo nvarchar(50)
,@so nvarchar(64)
,@jelszoHash nvarchar(64)
INSERT INTO @Table (IntezmenyAzonosito, IntezmenyId, TanevId, FelhasznaloBelepesId, Jelszo)
SELECT i.C_AZONOSITO, i.ID, tv.ID, fb.ID, ISNULL(@pJelszo, dev.fnGeneratePassword(8)) AS Jelszo
FROM T_INTEZMENY i
INNER JOIN T_TANEV tv ON tv.C_INTEZMENYID = i.ID AND tv.C_AKTIV = 'T' AND tv.TOROLT = 'F'
INNER JOIN T_FELHASZNALOBELEPES fb ON fb.C_TANEVID = tv.ID AND fb.C_BEJELENTKEZESINEV = @pFelhasznaloNev AND fb.TOROLT = 'F'
WHERE i.TOROLT = 'F'
AND i.C_AZONOSITO IN (SELECT LTRIM(RTRIM(value)) FROM string_split(@pIntezmenyAzonositok, ','))
DECLARE intCursor CURSOR LOCAL FOR
SELECT FelhasznaloBelepesId, Jelszo
FROM @Table
OPEN intCursor
FETCH NEXT FROM intCursor
INTO @FelhasznaloBelepesId, @Jelszo
WHILE @@FETCH_STATUS = 0 BEGIN
SET @so = CAST((SELECT * FROM dev.vGetRand) AS nvarchar(64))
SET @jelszoHash = dev.fnConvertBase64(HASHBYTES('SHA1', CONVERT(VARBINARY(MAX), CONVERT(NVARCHAR(MAX), @jelszo + @so))))
UPDATE T_FELHASZNALOBELEPES SET
C_JELSZO = @jelszoHash
,C_SO = @so
,C_JELSZOVALTOZTATASIDEJE = GETDATE()
,SERIAL = SERIAL + 1
,LASTCHANGED = GETDATE()
,MODIFIER = 0
WHERE ID = @FelhasznaloBelepesId
FETCH NEXT FROM intCursor
INTO @FelhasznaloBelepesId, @Jelszo
END
SELECT IntezmenyAzonosito, Jelszo
FROM @Table
END
GO