Stadtwerke_Bebra/DMS/SQL-Server/Tabellenwertfunktionen/[FNDD_CHECK_USER_MODULE].sql
2024-03-21 17:47:57 +01:00

180 lines
6.6 KiB
Transact-SQL

USE [DD_ECM]
GO
/****** Object: UserDefinedFunction [dbo].[FNDD_CHECK_USER_MODULE] Script Date: 21.03.2024 17:13:27 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE FUNCTION [dbo].[FNDD_CHECK_USER_MODULE] (@pUSERNAME VARCHAR(100), @pMODULE_SHORT_NAME VARCHAR(10),@pCLIENTID INTEGER)
RETURNS @Table TABLE
(SequentialOrder INT IDENTITY(1, 1),
USER_ID INTEGER,
USER_PRENAME VARCHAR(50),
USER_SURNAME VARCHAR(50),
USER_SHORTNAME VARCHAR(50),
USER_EMAIL VARCHAR(100),
USER_LANGUAGE VARCHAR(10),
USER_DATE_FORMAT VARCHAR(10),
USER_RIGHT_FILE_DEL BIT,
MODULE_ACCESS BIT,
IS_ADMIN BIT,
USERCOUNT_LOGGED_IN INTEGER,
COMMENT VARCHAR(500),
USER_RIGHT2 BIT NOT NULL DEFAULT 1,
USER_RIGHT3 BIT NOT NULL DEFAULT 0,
USER_RIGHT4 BIT NOT NULL DEFAULT 0,
USER_RIGHT5 BIT NOT NULL DEFAULT 0,
WORKING_MODE VARCHAR(5000) NOT NULL DEFAULT ''
,ADDITIONAL_TITLE VARCHAR(200))
AS
BEGIN
/*
This function checks all user-relevant relations an
*/
DECLARE
@RESULT VARCHAR(500),
@USER_ID INTEGER,
@USER_PRENAME VARCHAR(50),
@USER_SURNAME VARCHAR(50),
@USER_SHORTNAME VARCHAR(50),
@USER_EMAIL VARCHAR(50),
@USER_LANGUAGE VARCHAR(10),
@USER_DATE_FORMAT VARCHAR(10),
@IS_IN_MODULE BIT,
@IS_ADMIN BIT,
@USER_RIGHT_FILE_DEL BIT,
@USER_RIGHT2 BIT,
@USER_RIGHT3 BIT,
@USER_RIGHT4 BIT,
@USER_RIGHT5 BIT,
@USERCOUNT_LOGGED_IN INTEGER,
@MODULE_NAME VARCHAR(100),
@MODULE_GUID INTEGER,
@USER_GROUPNAME VARCHAR(100),
@ADMIN_GROUPNAME VARCHAR(100),
@WORKING_MODE VARCHAR(1000),
@ADDITIONAL_TITLE VARCHAR(500) = 'Stadtwerke Bebra - Workflows';
--'PM#NO_MASS_VALIDATOR;PM#FORCE_LAYOUT_OVERVIEW;PM#NO_CHARTS;PM#DEBUG_LOG'
SET @USER_RIGHT2 = 0 --0 = Drucken und Vorschau; 1 = DocumentPropertyView only View
SET @USER_RIGHT3 = 0
SET @USER_RIGHT4 = 0
SET @USER_RIGHT5 = 0
DECLARE @CONN_ID_IDB INTEGER
SELECT @CONN_ID_IDB = GUID FROM TBDD_CONNECTION WHERE SYS_CONNECTION = 1 AND BEZEICHNUNG = 'IDB'
SET @WORKING_MODE = ''
IF @pMODULE_SHORT_NAME = 'PM'
BEGIN
SET @WORKING_MODE = 'PM.NO_MASS_VALIDATOR#PM.FORCE_LAYOUT_OVERVIEW#PM.NO_CHARTS#PM.GHOSTMODE'--#PM.IDBWITHWMFS#PM.IDB_CONID!' + CONVERT(VARCHAR(2),@CONN_ID_IDB) #PM.DEBUG_LOG
+'#PM.MONITORING#PM.COLORSCHEME=Blue#PM.COL_LAST_EDITED=[Letzte Bearbeitung]#PM.COL_LAST_ADDED=[Erhalten wann]'
END
SET @USER_ID = 0
SET @IS_ADMIN = 0
SET @IS_IN_MODULE = 0
SET @USERCOUNT_LOGGED_IN = 0
SET @RESULT = ''
IF @pMODULE_SHORT_NAME = 'PM'
BEGIN
SET @USER_GROUPNAME = 'PM_USER'
SET @ADMIN_GROUPNAME = 'PM_ADMINS'
END
ELSE IF @pMODULE_SHORT_NAME = 'CW'
BEGIN
SET @USER_GROUPNAME = 'CW_USER'
SET @ADMIN_GROUPNAME = 'CW_ADMINS'
END
ELSE IF @pMODULE_SHORT_NAME = 'ADDI'
BEGIN
SET @USER_GROUPNAME = 'ADDI_USER'
SET @ADMIN_GROUPNAME = 'ADDI_ADMINS'
END
ELSE IF @pMODULE_SHORT_NAME = 'GLOBIX'
BEGIN
SET @USER_GROUPNAME = 'GLOBIX_USER'
SET @ADMIN_GROUPNAME = 'GLOBIX_ADMINS'
END
ELSE IF @pMODULE_SHORT_NAME = 'UM'
BEGIN
SET @USER_GROUPNAME = 'XXXX'
SET @ADMIN_GROUPNAME = 'UM_ADMINS'
END
SELECT @MODULE_GUID = GUID, @MODULE_NAME = NAME FROM TBDD_MODULES WHERE SHORT_NAME = @pMODULE_SHORT_NAME
IF NOT EXISTS(SELECT GUID FROM TBDD_USER WHERE UPPER(USERNAME) = UPPER(@pUSERNAME))
BEGIN
SET @RESULT = 'USER NOT CONFIGURED OR LISTED'
END
ELSE
BEGIN
SELECT @USER_ID = GUID,@USER_PRENAME = PRENAME,
@USER_SURNAME = NAME, @USER_SHORTNAME = SHORTNAME,@USER_EMAIL = EMAIL,@USER_LANGUAGE = LANGUAGE,@USER_DATE_FORMAT = DATE_FORMAT FROM TBDD_USER WHERE UPPER(USERNAME) = UPPER(@pUSERNAME)
--##### LICENSE COUNT
--SELECT @USERCOUNT_LOGGED_IN = [dbo].[FNDD_GET_LICENSE_COUNT] (@pCLIENTID)
SELECT @USERCOUNT_LOGGED_IN = COUNT(*) FROM TBDD_USER_MODULE_LOG_IN WHERE UPPER(MODULE) = UPPER(@MODULE_NAME) AND CLIENT_ID = @pCLIENTID
--CHECK USER ÍS IN MODULE_USER_GROUP
IF EXISTS(select T1.* from TBDD_GROUPS T, TBDD_GROUPS_USER T1 WHERE T.GUID = T1.GROUP_ID AND T1.USER_ID = @USER_ID AND UPPER(T.NAME) = @USER_GROUPNAME)
BEGIN
SET @IS_IN_MODULE = 1
SET @RESULT = 'User is part of Group (' + @USER_GROUPNAME + ')'
IF EXISTS(select T.* from TBDD_USER_MODULES T WHERE T.USER_ID = @USER_ID AND T.MODULE_ID = @MODULE_GUID)
BEGIN
SET @RESULT = @RESULT + '| User is also configured in User-Modules'
select @IS_ADMIN = T.IS_ADMIN,@USER_RIGHT_FILE_DEL = T.RIGHT1 from TBDD_USER_MODULES T WHERE T.USER_ID = @USER_ID AND T.MODULE_ID = @MODULE_GUID
END
END
ELSE
BEGIN
SET @RESULT = 'User not part of group (' + @USER_GROUPNAME + ')'
IF EXISTS(select T.* from TBDD_USER_MODULES T WHERE T.USER_ID = @USER_ID AND T.MODULE_ID = @MODULE_GUID)
BEGIN
SET @RESULT = @RESULT + '| BUT User configured in User-Modules'
select @IS_ADMIN = T.IS_ADMIN,@USER_RIGHT_FILE_DEL = T.RIGHT1
--,@USER_RIGHT2 = T.RIGHT2
from TBDD_USER_MODULES T WHERE T.USER_ID = @USER_ID AND T.MODULE_ID = @MODULE_GUID
END
END
-- Admin can do all!
IF EXISTS(select T1.* from TBDD_GROUPS T, TBDD_GROUPS_USER T1 WHERE T.GUID = T1.GROUP_ID AND T1.USER_ID = @USER_ID AND UPPER(T.NAME) = @ADMIN_GROUPNAME)
BEGIN
SET @RESULT = @RESULT + '| User is part of group (' + @ADMIN_GROUPNAME + ')'
SET @IS_ADMIN = 1
SET @IS_IN_MODULE = 1
SET @USER_RIGHT_FILE_DEL = 1
END
-- Scan Erfasser dürfen Dateien auch wieder löschen
IF EXISTS(select T1.* from TBDD_GROUPS T, TBDD_GROUPS_USER T1 WHERE T.GUID = T1.GROUP_ID AND T1.USER_ID = @USER_ID AND (UPPER(T.NAME) like '%Scan-Erfasser' ))
BEGIN
SET @USER_RIGHT_FILE_DEL = 1
END
-----------------------------------------------------------------------
-- GF, Admin und Fibu Gruppen sollen das Monitoring sehen, sonst keiner
IF EXISTS(select T1.* from TBDD_GROUPS T, TBDD_GROUPS_USER T1 WHERE T.GUID = T1.GROUP_ID AND T1.USER_ID = @USER_ID AND (UPPER(T.NAME) like '%Geschäftsführung' OR UPPER(T.NAME) like '%FiBu' OR UPPER(T.NAME) like '%Admins'))
BEGIN
SET @WORKING_MODE = @WORKING_MODE + '#PM.MONITORING'
END
-----------------------------------------------------------------------
END
INSERT INTO @Table (USER_ID,USER_PRENAME, USER_SURNAME,USER_SHORTNAME,USER_EMAIL,USER_LANGUAGE,USER_DATE_FORMAT, USER_RIGHT_FILE_DEL,
MODULE_ACCESS,IS_ADMIN,USERCOUNT_LOGGED_IN, COMMENT,WORKING_MODE,USER_RIGHT2,USER_RIGHT3,USER_RIGHT4,USER_RIGHT5
,ADDITIONAL_TITLE)
VALUES (@USER_ID,@USER_PRENAME,@USER_SURNAME,@USER_SHORTNAME,@USER_EMAIL,@USER_LANGUAGE,@USER_DATE_FORMAT,@USER_RIGHT_FILE_DEL,
@IS_IN_MODULE,@IS_ADMIN,@USERCOUNT_LOGGED_IN,@RESULT,@WORKING_MODE,@USER_RIGHT2,@USER_RIGHT3,@USER_RIGHT4,@USER_RIGHT5
,@ADDITIONAL_TITLE)
RETURN
END
GO