63 lines
2.3 KiB
Transact-SQL
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
|