home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / WindowsServerTrial / server.iso / sources / install.wim / 1 / Windows / System32 / azroles.dll / FILE / 103 < prev    next >
Text File  |  2008-01-19  |  230KB  |  8,250 lines

  1. IF EXISTS (SELECT name FROM sysobjects
  2.         WHERE name = 'AzMan_SP_GenerateObjectAudit' and type = 'P')
  3.     DROP PROCEDURE [AzMan_SP_GenerateObjectAudit]
  4. GO
  5.  
  6. Create Procedure [AzMan_SP_GenerateObjectAudit]  
  7. (
  8. @success int,
  9. @event int,
  10. @actObjectType tinyint,
  11. @actObjectName nvarchar(512),
  12. @actObjectGuid uniqueidentifier,
  13. @targetType tinyint,
  14. @targetName nvarchar(512),
  15. @targetGuid uniqueidentifier,
  16. @otherInfo nvarchar(1024)
  17. )
  18. AS
  19.     DECLARE @UserName nvarchar(256)
  20.     DECLARE @UserSid varbinary(85)
  21.     SELECT @UserName = User_Name()
  22.     SELECT @UserSid = SUSER_SID()
  23.     
  24.     -- events:
  25.     -- 0 for SE_AUDITID_AZ_SQL_OBJECT_CREATE
  26.     -- 1 for SE_AUDITID_AZ_SQL_OBJECT_DELETE
  27.     -- 2 for SE_AUDITID_AZ_SQL_REFERENCE_ASSIGN
  28.     -- 3 for SE_AUDITID_AZ_SQL_REFERENCE_REMOVE
  29.     
  30.     
  31.     Exec master.dbo.AzGenerateAudit @success,
  32.                                     @event, 
  33.                                     @actObjectType, 
  34.                                     @actObjectName, 
  35.                                     @actObjectGuid, 
  36.                                     0, 
  37.                                     @UserName, 
  38.                                     @UserSid, 
  39.                                     @targetType,  
  40.                                     @targetName, 
  41.                                     @targetGuid,
  42.                                     @otherInfo
  43.  
  44. GO
  45.  
  46. IF EXISTS (SELECT name FROM sysobjects
  47.         WHERE name = 'AzMan_SP_GenerateMemberAudit' and type = 'P')
  48.     DROP PROCEDURE [AzMan_SP_GenerateMemberAudit]
  49. GO
  50.  
  51. Create Procedure [AzMan_SP_GenerateMemberAudit]  
  52. (
  53. @success int,
  54. @event int,
  55. @actObjectType tinyint,
  56. @actObjectName nvarchar(512),
  57. @actObjectGuid uniqueidentifier,
  58. @memberName nvarchar(256),
  59. @memberSid varbinary(85),
  60. @memberFlag int,
  61. @otherInfo nvarchar(1024)
  62. )
  63. AS
  64.     DECLARE @UserName nvarchar(256)
  65.     DECLARE @UserSid varbinary(85)
  66.     SELECT @UserName = User_Name()
  67.     SELECT @UserSid = SUSER_SID()
  68.     
  69.     -- events:
  70.     -- 4 for SE_AUDITID_AZ_SQL_MEMBER_ASSIGN
  71.     -- 5 for SE_AUDITID_AZ_SQL_MEMBER_REMOVE
  72.     
  73.     -- memberFlags:
  74.     -- 0 for non-members
  75.     -- 1 for members
  76.     -- 2 for admins
  77.     -- 3 for readers
  78.     -- 4 for delegated users
  79.     
  80.     
  81.     Exec master.dbo.AzGenerateAudit @success,
  82.                                     @event, 
  83.                                     @actObjectType, 
  84.                                     @actObjectName, 
  85.                                     @actObjectGuid, 
  86.                                     0, 
  87.                                     @UserName, 
  88.                                     @UserSid, 
  89.                                     @memberName,  
  90.                                     @memberSid, 
  91.                                     @memberFlag,
  92.                                     @otherInfo
  93.  
  94. GO
  95.  
  96. IF EXISTS (SELECT name FROM sysobjects
  97.         WHERE name = 'AzMan_SP_GenerateGenericAudit' and type = 'P')
  98.     DROP PROCEDURE [AzMan_SP_GenerateGenericAudit]
  99. GO
  100.  
  101. Create Procedure [AzMan_SP_GenerateGenericAudit]  
  102. (
  103. @success int,
  104. @actObjectType tinyint,
  105. @actObjectName nvarchar(512),
  106. @actObjectGuid uniqueidentifier,
  107. @otherInfo nvarchar(1024)
  108. )
  109. AS
  110.     DECLARE @UserName nvarchar(256)
  111.     DECLARE @UserSid varbinary(85)
  112.     SELECT @UserName = User_Name()
  113.     SELECT @UserSid = SUSER_SID()
  114.     
  115.     -- events:
  116.     -- 6 for SE_AUDITID_AZ_SQL_OTHER
  117.     
  118.         
  119.     Exec master.dbo.AzGenerateAudit @success,
  120.                                     6, 
  121.                                     @actObjectType, 
  122.                                     @actObjectName, 
  123.                                     @actObjectGuid, 
  124.                                     0, 
  125.                                     @UserName, 
  126.                                     @UserSid, 
  127.                                     @otherInfo
  128.  
  129. GO
  130.  
  131.  
  132. IF EXISTS (SELECT name FROM sysobjects
  133.      WHERE name = 'AzMan_SPU_SqlRoleUpdated' and type = 'P')
  134.     DROP PROCEDURE AzMan_SPU_SqlRoleUpdated
  135. GO
  136.  
  137. CREATE PROCEDURE dbo.AzMan_SPU_SqlRoleUpdated 
  138. (
  139. @Return int output,
  140. @ObjectID int,
  141. @ObjectType tinyint
  142. )
  143. AS
  144.  
  145. DECLARE @OldChildTS timestamp
  146.     
  147.     -- We can't just manually update the row timestamp because it is a timestamp column. 
  148.     -- So we set-and-reset the ChildUpdateTimeStamp for the update of the timestamp column
  149.     
  150.     IF @ObjectType = 0
  151.         BEGIN
  152.             SELECT @OldChildTS = [ChildUpdateTimeStamp] FROM [AzMan_AzAuthorizationStore] WHERE ID = @ObjectID
  153.             UPDATE [AzMan_AzAuthorizationStore]
  154.                 SET [ChildUpdateTimeStamp]=@OldChildTS + 1
  155.                 WHERE ID = @ObjectID
  156.                 
  157.             UPDATE [AzMan_AzAuthorizationStore]
  158.                 SET [ChildUpdateTimeStamp]=@OldChildTS
  159.                 WHERE ID = @ObjectID
  160.         END
  161.     ELSE IF @ObjectType = 1
  162.         BEGIN
  163.             SELECT @OldChildTS = [ChildUpdateTimeStamp] FROM [AzMan_AzApplication] WHERE ID = @ObjectID
  164.             UPDATE [AzMan_AzApplication]
  165.                 SET [ChildUpdateTimeStamp]=@OldChildTS + 1
  166.                 WHERE ID = @ObjectID
  167.             UPDATE [AzMan_AzApplication]
  168.                 SET [ChildUpdateTimeStamp]=@OldChildTS
  169.                 WHERE ID = @ObjectID
  170.         END
  171.     ELSE IF @ObjectType = 4
  172.         BEGIN
  173.             SELECT @OldChildTS = [ChildUpdateTimeStamp] FROM [AzMan_AzScope] WHERE ID = @ObjectID
  174.             UPDATE [AzMan_AzScope]
  175.                 SET [ChildUpdateTimeStamp]=@OldChildTS + 1
  176.                 WHERE ID = @ObjectID
  177.             UPDATE [AzMan_AzScope]
  178.                 SET [ChildUpdateTimeStamp]=@OldChildTS
  179.                 WHERE ID = @ObjectID
  180.         END
  181.         
  182.     SET @Return = @@ERROR
  183.     
  184.     RETURN @Return
  185.     
  186. GO
  187.  
  188. IF EXISTS (SELECT name FROM sysobjects
  189.         WHERE name = 'AzMan_SP_GetRoleMemberCount' and type = 'P')
  190.     DROP PROCEDURE AzMan_SP_GetRoleMemberCount
  191. GO
  192.  
  193. CREATE PROCEDURE dbo.AzMan_SP_GetRoleMemberCount 
  194. (
  195. @SqlRoleName nvarchar(64),
  196. @count int output
  197. )
  198. AS
  199.     select @count = count(*)  
  200.     from sysusers u, sysusers g, sysmembers m  
  201.     where   g.uid = m.groupuid
  202.         and    g.name = @SqlRoleName
  203.         and    g.issqlrole = 1  
  204.         and    u.uid = m.memberuid
  205.     RETURN
  206. GO
  207.  
  208.  
  209. IF EXISTS (SELECT name FROM sysobjects
  210.         WHERE name = 'AzMan_SP_GetSQLRole' and type = 'P')
  211.     DROP PROCEDURE AzMan_SP_GetSQLRole
  212. GO
  213.  
  214. Create Procedure [AzMan_SP_GetSQLRole]
  215. (
  216. @Return [int] output,
  217. @ID [int]
  218. ,@ObjectType [tinyint]
  219. ,@RoleType [tinyint]
  220. ,@SQLRoleName [nvarchar] (64) output
  221. )
  222. As
  223.     Set @Return = 0
  224.     
  225.     Select @SQLRoleName = SQLRoleName from Azman_SQLRole
  226.     where  ObjectID = @ID and ObjectType = @ObjectType and RoleType = @RoleType
  227. Go
  228.  
  229. IF EXISTS (SELECT name FROM sysobjects
  230.         WHERE name = 'AzMan_SPI_SQLRole' and type = 'P')
  231.     DROP PROCEDURE AzMan_SPI_SQLRole
  232. GO
  233.  
  234. Create PROCEDURE dbo.AzMan_SPI_SQLRole
  235. (
  236.  @Return [int] output
  237. ,@ID int
  238. ,@ObjectType [tinyint]
  239. ,@RoleType [tinyint]
  240. ,@SQLRoleName [nvarchar] (64) output    
  241. )
  242. AS
  243.     Set @SQLRoleName = ''
  244.  
  245.     DECLARE @myid   uniqueidentifier
  246.     DECLARE @RoleID smallint
  247.     DECLARE @Ret    [int]
  248.     
  249.     declare @dbName nvarchar (255)
  250.  
  251.     Set @Return = 0
  252.  
  253.  
  254.     SET @myid = NEWID()
  255.     Set @SQLRoleName = CONVERT(varchar(64), @myid)
  256.     Set @RoleID = 1 
  257.     
  258.     If Is_Member('db_owner') = 1 or Is_Member('db_securityadmin') = 1
  259.     Begin
  260.         EXEC @Ret = sp_addrole @SQLRoleName
  261.     End
  262.     else
  263.     begin
  264.         Set @dbName = db_name()
  265.         Exec master.dbo.xp_AzManAddRole @Ret output, @ID, @ObjectType, @dbName, @SQLRoleName
  266.     End
  267.     
  268.     if @Ret = 0 
  269.         Begin
  270.             select @RoleID = uid from sysusers where (name = @SQLRoleName) and (issqlrole = 1)
  271.             
  272.             Insert Into [dbo].[Azman_SQLRole]
  273.             (
  274.                 [uid],      
  275.                 [ObjectID], 
  276.                 [ObjectType],
  277.                 [SQLRoleName],
  278.                 [RoleType] 
  279.             )
  280.             Values
  281.             (
  282.                 @RoleID,
  283.                 @ID,
  284.                 @ObjectType,
  285.                 @SQLRoleName,
  286.                 @RoleType
  287.             )
  288.         End     
  289.     Else
  290.         Begin
  291.             Set @Return = -1
  292.         End
  293.  
  294.     Return @Return  
  295. go
  296.  
  297. IF EXISTS (SELECT name FROM sysobjects
  298.         WHERE name = 'AzMan_SPI_SQLRole_From_XP' and type = 'P')
  299.     DROP PROCEDURE AzMan_SPI_SQLRole_From_XP
  300. GO
  301.  
  302. Create PROCEDURE dbo.AzMan_SPI_SQLRole_From_XP
  303. (
  304.  @Return [int] output
  305. ,@SQLRoleName [nvarchar] (64) 
  306. )
  307. AS
  308.  
  309.     DECLARE @RoleID smallint
  310.     DECLARE @Ret    [int]
  311.  
  312.     Set @Return = -1
  313.     Set @RoleID = -1
  314.  
  315.     EXEC @Ret = sp_addrole @SQLRoleName
  316.     
  317.     if @Ret = 0 
  318.         Begin
  319.             select @RoleID = uid from sysusers where (name = @SQLRoleName) and (issqlrole = 1)
  320.             if @RoleID <> -1
  321.             Begin
  322.                 set @Return = 0
  323.             End
  324.         End     
  325.     Else
  326.         Begin
  327.             Set @Return = -1
  328.         End
  329.  
  330.     Return @Return  
  331. go
  332.  
  333. IF EXISTS (SELECT name FROM sysobjects
  334.         WHERE name = 'AzMan_SPI_Add_User_To_SQLRole_From_XP' and type = 'P')
  335.     DROP PROCEDURE AzMan_SPI_Add_User_To_SQLRole_From_XP
  336. GO
  337.  
  338. CREATE PROCEDURE AzMan_SPI_Add_User_To_SQLRole_From_XP
  339. (
  340.  @Return             [int] output
  341. ,@ID                 [int]
  342. ,@ObjectType         [tinyint]
  343. ,@RoleType           [tinyint]
  344. ,@UserName          [nvarchar] (255)
  345. )
  346. AS
  347.     DECLARE @Ret                [int]
  348.     Declare @NameInDB           [nvarchar] (255)
  349.     Declare @SQLRoleName        [nvarchar] (64) 
  350.     DECLARE @RoleMemberCount    [int]
  351.     Set @Return = -1    
  352.     
  353.     Set @SQLRoleName = NULL
  354.     
  355.     Exec dbo.[AzMan_SP_GetSQLRole] @Ret output, 
  356.             @ID, 
  357.             @ObjectType, 
  358.             @RoleType, 
  359.             @SQLRoleName = @SQLRoleName output  
  360.  
  361.     if len(@SQLRoleName) > 0
  362.     Begin
  363.     
  364.         set @NameInDB = null                          
  365.  
  366.         SET @Ret = 0
  367.  
  368.         -- if no such loging yet, then grant the user login
  369.         IF NOT EXISTS (SELECT * FROM master..syslogins WHERE UPPER(loginname) = UPPER(@UserName) AND hasaccess=1)
  370.             BEGIN
  371.                 EXEC @Ret = sp_grantlogin @Username
  372.             END
  373.  
  374.         -- if the user does not have access to the db
  375.         IF @Ret= 0 AND NOT EXISTS (SELECT * FROM sysusers WHERE UPPER(Name) = UPPER(@UserName) AND hasdbaccess = 1)
  376.             BEGIN
  377.                 EXEC @Ret = sp_grantdbaccess @Username, @NameInDB output
  378.             END
  379.             
  380.         -- workaround for now sp_grantdbaccess returns 1 when the user already has access
  381.         if @Ret= 0 or len(@NameInDB) > 0
  382.             BEGIN
  383.                 Exec @Ret = sp_addrolemember  @SQLRoleName, @UserName
  384.                 -- if the user is successfully added to a scope's role
  385.                 IF @Ret = 0 AND @ObjectType = 4 -- scope
  386.                     BEGIN
  387.                         EXEC AzMan_SP_GetRoleMemberCount @SQLRoleName, @RoleMemberCount output
  388.                         IF @RoleMemberCount > 0
  389.                             UPDATE dbo.AzMan_AzScope SET dbo.AzMan_AzScope.HasSpecificUsers = 1 
  390.                                 WHERE dbo.AzMan_AzScope.ID = @ID
  391.                     END
  392.             END
  393.     End
  394.         
  395.     Set @Return = @Ret 
  396. GO
  397.  
  398. IF EXISTS (SELECT name FROM sysobjects
  399.         WHERE name = 'AzMan_SPI_Add_User_To_SQLRole' and type = 'P')
  400.     DROP PROCEDURE AzMan_SPI_Add_User_To_SQLRole
  401. GO
  402.  
  403. CREATE PROCEDURE AzMan_SPI_Add_User_To_SQLRole
  404. (
  405.  @Return             [int] output
  406. ,@ID                 [int]
  407. ,@ObjectType         [tinyint]
  408. ,@RoleType           [tinyint]
  409. ,@SQLRoleName        [nvarchar] (64) 
  410. ,@UserSid            varbinary(85)
  411. ,@UserName          [nvarchar] (255)
  412. ,@SaclIsOn          [bit]
  413. )
  414. AS
  415.     DECLARE @Ret    [int]
  416.     Declare @NameInDB [nvarchar] (255)
  417.     DECLARE @ObjectName nvarchar(512)
  418.     DECLARE @ObjectGuid uniqueidentifier
  419.     DECLARE @MemberType int    
  420.     declare @dbName nvarchar (255)
  421.     DECLARE @RoleMemberCount    [int]
  422.     
  423.     Set @Return = -1
  424.  
  425.     -- get info for auditing
  426.     IF @SaclIsOn = 1
  427.         BEGIN
  428.             IF @ObjectType = 0 -- store
  429.                 SELECT @ObjectName = store.Name, @ObjectGuid=store.ObjectGuid FROM [dbo].[Azman_AzAuthorizationStore] store
  430.                     WHERE store.ID=@ID
  431.             IF @ObjectType = 1 -- app
  432.                 SELECT @ObjectName = app.Name, @ObjectGuid=app.ObjectGuid FROM [dbo].[Azman_AzApplication] app
  433.                     WHERE app.ID=@ID
  434.             IF @ObjectType = 4 -- scope
  435.                 SELECT @ObjectName = scope.Name, @ObjectGuid=scope.ObjectGuid FROM [dbo].[Azman_AzScope] scope
  436.                     WHERE scope.ID=@ID
  437.             
  438.             IF @RoleType = 1  -- admin
  439.                 SET @MemberType = 2
  440.             IF @RoleType = 2  -- reader
  441.                 SET @MemberType = 3
  442.             IF @RoleType = 3  -- delegated users
  443.                 SET @MemberType = 4
  444.         END
  445.                      
  446.     set @NameInDB = null
  447.     If Is_Member('db_owner') = 1
  448.     Begin
  449.         exec AzMan_SPI_Add_User_To_SQLRole_From_XP @Return output, @ID, @ObjectType, @RoleType, @UserName
  450.     End
  451.     else
  452.     Begin
  453.         Set @dbName = db_name()
  454.         Exec master.dbo.xp_AzManAddUserToRole @Return output, @ID, @ObjectType, @RoleType, @dbName, @UserName
  455.     End
  456.     
  457.     -- trigger the parent object's update timestamp
  458.     IF @Return = 0
  459.         BEGIN
  460.             Exec AzMan_SPU_SqlRoleUpdated @Ret output, @ID, @ObjectType
  461.             IF @ObjectType = 4 -- scope
  462.                 BEGIN
  463.                     EXEC AzMan_SP_GetRoleMemberCount @SQLRoleName, @RoleMemberCount output
  464.                     IF @RoleMemberCount > 0
  465.                         UPDATE dbo.AzMan_AzScope SET dbo.AzMan_AzScope.HasSpecificUsers = 1 
  466.                             WHERE dbo.AzMan_AzScope.ID = @ID
  467.                 END
  468.         END
  469.         
  470.     -- generate an audit
  471.     IF @SaclIsOn = 1
  472.         BEGIN
  473.             EXEC [AzMan_SP_GenerateMemberAudit]
  474.                 @Return,
  475.                 4,  -- 0 for SE_AUDITID_AZ_SQL_MEMBER_ASSIGN
  476.                 @ObjectType,
  477.                 @ObjectName,
  478.                 @ObjectGuid,
  479.                 @UserName,
  480.                 @UserSid,
  481.                 @MemberType,  -- member type
  482.                 N'' -- no other info
  483.         END
  484.             
  485.     Return @Return
  486.  
  487. GO
  488.  
  489. IF EXISTS (SELECT name FROM sysobjects
  490.         WHERE name = 'AzMan_SPI_Create_SqlRole_For_Object' and type = 'P')
  491.     DROP PROCEDURE AzMan_SPI_Create_SqlRole_For_Object
  492. GO
  493.  
  494. CREATE PROCEDURE AzMan_SPI_Create_SqlRole_For_Object
  495. (
  496.  @Return                [int] output
  497. ,@ID                    [int]
  498. ,@ObjectType        [tinyint]
  499. ,@RoleType          [tinyint]  
  500. )
  501. AS
  502.     DECLARE @Ret            [int]
  503.     DECLARE @SQLRoleName    [nvarchar] (255)
  504.     
  505.     DECLARE @SaclIsOn [bit]
  506.     DECLARE @AccessAtObjType tinyint
  507.     Set @SaclIsOn = 0
  508.     Set @Return = 0
  509.     
  510.     Exec dbo.[AzMan_SP_GetSQLRole] @Ret output, 
  511.             @ID, 
  512.             @ObjectType, 
  513.             @RoleType, 
  514.             @SQLRoleName = @SQLRoleName output  
  515.     
  516.     if @SQLRoleName Is NULL
  517.         begin
  518.             Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output, @ID, @ObjectType, 1, @SaclIsOn output
  519.             if @Return <> 1
  520.                 begin
  521.                     Set @Return = -5
  522.                     goto Done
  523.                 end
  524.             -- we have proper access, then insert the role
  525.             Exec AzMan_SPI_SQLRole @Return output, @ID, @ObjectType, @RoleType, @SQLRoleName = @SQLRoleName output
  526.         end
  527.     
  528. Done:
  529.  
  530.     Return @Return  
  531.  
  532. GO
  533.  
  534. IF EXISTS (SELECT name FROM sysobjects
  535.         WHERE name = 'AzMan_SPI_Add_User_To_Role' and type = 'P')
  536.     DROP PROCEDURE AzMan_SPI_Add_User_To_Role
  537. GO
  538.  
  539. CREATE PROCEDURE AzMan_SPI_Add_User_To_Role
  540. (
  541.  @Return                [int] output
  542. ,@ID                    [int]
  543. ,@ObjectType        [tinyint]
  544. ,@RoleType          [tinyint]
  545. ,@UserSid           varbinary(85)
  546. ,@UserName          [nvarchar] (255)    
  547. )
  548. AS
  549.     DECLARE @Ret            [int]
  550.     DECLARE @SQLRoleName    [nvarchar] (255)
  551.     Declare @NameInDB       [nvarchar] (255)
  552.     
  553.     DECLARE @SaclIsOn [bit]
  554.     DECLARE @AccessAtObjType tinyint
  555.     Set @SaclIsOn = 0
  556.     Set @Return = 0
  557.     
  558.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output, @ID, @ObjectType, 1, @SaclIsOn output
  559.     
  560.     IF @Return <> 1
  561.         BEGIN
  562.             Set @Return = -5
  563.             goto Done
  564.         END
  565.         
  566.     Set @Return = -1
  567.  
  568.     Exec dbo.[AzMan_SP_GetSQLRole] @Ret output, 
  569.             @ID, 
  570.             @ObjectType, 
  571.             @RoleType, 
  572.             @SQLRoleName = @SQLRoleName output  
  573.  
  574.     if @SQLRoleName  Is NULL
  575.     Begin
  576.         Exec AzMan_SPI_SQLRole @Return output, @ID, @ObjectType, @RoleType, @SQLRoleName = @SQLRoleName output
  577.     End
  578.     
  579.     if @SQLRoleName is NOT NULL
  580.     Begin 
  581.         Exec AzMan_SPI_Add_User_To_SQLRole @Return output, @ID, @ObjectType, @RoleType, @SQLRoleName, @UserSid, @UserName, @SaclIsOn
  582.     End
  583.     Else
  584.     Begin
  585.         Set @Return = -1
  586.     End     
  587.  
  588. Done:
  589.  
  590.     Return @Return  
  591.  
  592. GO
  593.  
  594. IF EXISTS (SELECT name FROM sysobjects
  595.         WHERE name = 'AzMan_SPD_User_From_SQLRole_From_XP' and type = 'P')
  596.     DROP PROCEDURE AzMan_SPD_User_From_SQLRole_From_XP
  597. GO
  598.  
  599. CREATE PROCEDURE AzMan_SPD_User_From_SQLRole_From_XP
  600. (
  601. @Return              [int] output
  602. ,@SQLRoleName        [nvarchar] (64)
  603. ,@UserName           [nvarchar] (255)
  604. )
  605. AS
  606.     DECLARE @Ret    [int]
  607.     
  608.     SET NOCOUNT ON
  609.     
  610.     Set @Return = -1
  611.     
  612.     Exec @Ret = sp_droprolemember @SQLRoleName, @UserName
  613.     
  614.     if @Ret <> 0 
  615.     Begin
  616.         Set @return = -1 
  617.     End
  618.     Else
  619.     Begin
  620.         Set @return = 0 
  621.     End
  622.     
  623.     SET NOCOUNT OFF
  624.     
  625.     Return @Return  
  626. GO
  627.  
  628. IF EXISTS (SELECT name FROM sysobjects
  629.         WHERE name = 'AzMan_SPD_User_From_SQLRole' and type = 'P')
  630.     DROP PROCEDURE AzMan_SPD_User_From_SQLRole
  631. GO
  632.  
  633. CREATE PROCEDURE AzMan_SPD_User_From_SQLRole
  634. (
  635.  @Return             [int] output
  636. ,@ID                 [int]
  637. ,@ObjectType         [tinyint]
  638. ,@RoleType           [tinyint]
  639. ,@SQLRoleName        [nvarchar] (64)
  640. ,@UserSid            varbinary(85)
  641. ,@UserName           [nvarchar] (255)
  642. ,@SaclIsOn           [bit]
  643. )
  644. AS
  645.     DECLARE @Ret    [int]
  646.     DECLARE @ObjectName nvarchar(512)
  647.     DECLARE @ObjectGuid uniqueidentifier
  648.     DECLARE @MemberType int 
  649.     Declare @DbName [nvarchar] (255)    
  650.     DECLARE @RoleMemberCount int
  651.     DECLARE @OtherRoleMemberCount int
  652.     
  653.     DECLARE @OtherRoleName [nvarchar] (64)
  654.     
  655.     Set @Return = -1
  656.     
  657.     If is_Member('db_owner') = 1 or is_Member('db_securityadmin')  = 1 or is_member('db_accessyadmin') = 1
  658.     Begin
  659.         Exec @Ret = sp_droprolemember @SQLRoleName, @UserName
  660.     End
  661.     else
  662.     begin
  663.         Set @dbName = db_name()
  664.         Exec master.dbo.xp_AzManRemoveUserFromRole 
  665.                     @Ret output,
  666.                     @ID,
  667.                     @ObjectType,
  668.                     @dbName,
  669.                     @SQLRoleName,
  670.                     @UserName
  671.     End
  672.     
  673.     if @Ret <> 0 
  674.     Begin
  675.         Set @return = -1 
  676.     End
  677.     Else
  678.     Begin
  679.         -- trigger the parent object's update timestamp
  680.         Set @return = 0
  681.         Exec AzMan_SPU_SqlRoleUpdated @return output, @ID, @ObjectType
  682.         
  683.         -- if the delete is successful to a scope role
  684.         IF @return = 0 AND @ObjectType = 4
  685.             BEGIN
  686.                 -- we need to get the other role's name for the scope
  687.                 SET @OtherRoleName = NULL
  688.                 IF @RoleType = 1 -- admin
  689.                     Exec [AzMan_SP_GetSQLRole] @Return output, @ID, @ObjectType, 2, @OtherRoleName output
  690.                 ELSE IF @RoleType = 2 -- reader
  691.                     Exec [AzMan_SP_GetSQLRole] @Return output, @ID, @ObjectType, 1, @OtherRoleName output  
  692.                 
  693.                 SET @RoleMemberCount = 0
  694.                 SET @OtherRoleMemberCount = 0
  695.                 IF @SQLRoleName IS NOT NULL
  696.                     EXEC AzMan_SP_GetRoleMemberCount @SQLRoleName, @RoleMemberCount output
  697.                 IF @OtherRoleName IS NOT NULL
  698.                     EXEC AzMan_SP_GetRoleMemberCount @OtherRoleName, @OtherRoleMemberCount output
  699.                 
  700.                 IF @RoleMemberCount = 0 AND @OtherRoleMemberCount = 0
  701.                     UPDATE dbo.AzMan_AzScope SET dbo.AzMan_AzScope.HasSpecificUsers = 0 
  702.                         WHERE dbo.AzMan_AzScope.ID = @ID
  703.             END
  704.     End
  705.     
  706.     -- get info for auditing
  707.     IF @SaclIsOn = 1
  708.         BEGIN
  709.             IF @ObjectType = 0 -- store
  710.                 SELECT @ObjectName = store.Name, @ObjectGuid=store.ObjectGuid FROM [dbo].[Azman_AzAuthorizationStore] store
  711.                     WHERE store.ID=@ID
  712.             IF @ObjectType = 1 -- app
  713.                 SELECT @ObjectName = app.Name, @ObjectGuid=app.ObjectGuid FROM [dbo].[Azman_AzApplication] app
  714.                     WHERE app.ID=@ID
  715.             IF @ObjectType = 4 -- scope
  716.                 SELECT @ObjectName = scope.Name, @ObjectGuid=scope.ObjectGuid FROM [dbo].[Azman_AzScope] scope
  717.                     WHERE scope.ID=@ID
  718.                     
  719.             IF @RoleType = 1  -- admin
  720.                 SET @MemberType = 2
  721.             IF @RoleType = 2  -- reader
  722.                 SET @MemberType = 3
  723.             IF @RoleType = 3  -- delegated users
  724.                 SET @MemberType = 4
  725.  
  726.             -- generate an audit
  727.             EXEC [AzMan_SP_GenerateMemberAudit]
  728.                 @Return,
  729.                 5,  -- 0 for SE_AUDITID_AZ_SQL_MEMBER_REMOVE
  730.                 @ObjectType,
  731.                 @ObjectName,
  732.                 @ObjectGuid,
  733.                 @UserName,
  734.                 @UserSid,
  735.                 @MemberType,  -- member type
  736.                 N'' -- no other info
  737.         END
  738.     
  739.     Return @Return  
  740.  
  741. GO
  742.  
  743. IF EXISTS (SELECT name FROM sysobjects
  744.         WHERE name = 'AzMan_SPD_User_From_Role' and type = 'P')
  745.     DROP PROCEDURE AzMan_SPD_User_From_Role
  746. GO
  747.  
  748. CREATE PROCEDURE AzMan_SPD_User_From_Role
  749. (
  750.  @Return                [int] output
  751. ,@ID                    [int]
  752. ,@ObjectType            [tinyint]
  753. ,@RoleType              [tinyint]
  754. ,@UserSid               varbinary(85)
  755. ,@UserName              [nvarchar] (255)    
  756. )
  757. AS
  758.     DECLARE @Ret            [int]
  759.     DECLARE @SQLRoleName    [nvarchar] (64) 
  760.     DECLARE @SaclIsOn [bit]
  761.     DECLARE @AccessAtObjType tinyint
  762.     Set @SaclIsOn = 0
  763.     Set @Return = 0
  764.     
  765.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output, @ID, @ObjectType, 1, @SaclIsOn output
  766.     
  767.     IF @Return <> 1
  768.         BEGIN
  769.             Set @Return = -5
  770.             goto Done
  771.         END
  772.  
  773.     Set @Return = -1
  774.  
  775.     Exec [AzMan_SP_GetSQLRole] @Return output, @ID, @ObjectType, @RoleType, @SQLRoleName = @SQLRoleName output  
  776.     
  777.     if @SQLRoleName Is not NULL
  778.     Begin
  779.         Exec AzMan_SPD_User_From_SQLRole @Return output, @ID, @ObjectType, @RoleType, @SQLRoleName, @UserSid, @UserName, @SaclIsOn
  780.     End
  781.     
  782. Done:
  783.     Return @Return  
  784.  
  785. GO
  786.  
  787. IF EXISTS (SELECT name FROM sysobjects
  788.         WHERE name = 'AzMan_SPS_Get_DBOwners' and type = 'P')
  789.     DROP PROCEDURE AzMan_SPS_Get_DBOwners
  790. GO
  791.  
  792. CREATE PROCEDURE AzMan_SPS_Get_DBOwners
  793. (
  794. @Return [int] output,
  795. @ID     [int]
  796. )
  797. AS
  798.     SET NOCOUNT ON
  799.     -- @ID is not used. But our internal implementation requires non-empty
  800.     -- parameter set where @Return is not considered one of them.
  801.     EXEC @Return = sp_helprolemember 'db_owner'
  802.     
  803.     SET NOCOUNT OFF
  804.     
  805.     Return @Return 
  806.  
  807. GO
  808.  
  809. IF EXISTS (SELECT name FROM sysobjects
  810.         WHERE name = 'AzMan_SPS_Get_Role_For_Object' and type = 'P')
  811.     DROP PROCEDURE AzMan_SPS_Get_Role_For_Object
  812. GO
  813.  
  814. CREATE PROCEDURE AzMan_SPS_Get_Role_For_Object
  815. (
  816. @Return      [int] output
  817. ,@ID         [int]
  818. ,@ObjectType [tinyint]
  819. ,@RoleType   [tinyint]
  820. )
  821. AS
  822.     DECLARE @SQLRolename [nvarchar] (64)
  823.  
  824.     SET NOCOUNT ON
  825.     
  826.     Set @SQLRolename = NULL
  827.     Set @Return = 0
  828.  
  829.     Select @SQLRolename = SQLRolename From [dbo].[Azman_SQLRole] 
  830.     where 
  831.       [ObjectID]    = @ID and
  832.       [ObjectType]  = @ObjectType and
  833.       [RoleType]    = @RoleType
  834.     
  835.     if @SQLRolename is not NULL 
  836.         Begin
  837.             EXEC @Return = sp_helprolemember @SQLRoleName
  838.         End
  839.     
  840.     SET NOCOUNT OFF
  841.     
  842.     Return @Return
  843.     
  844. GO
  845.  
  846.  
  847. IF EXISTS (SELECT name FROM sysobjects
  848.         WHERE name = 'AzMan_SP_Get_Object_Path_For_Container' and type = 'P')
  849.     DROP PROCEDURE AzMan_SP_Get_Object_Path_For_Container
  850. GO
  851.  
  852. Create Procedure [AzMan_SP_Get_Object_Path_For_Container]
  853. (
  854.  @Return                [int]   output
  855. ,@ID                    [int]
  856. ,@ObjectType            [tinyint]
  857. ,@StoreID               [int]   output
  858. ,@AppID                 [int]   output
  859. ,@ScopeID               [int]   output
  860. )
  861. AS
  862.     DECLARE @RowCount INT, @Error INT
  863.     Declare @ParentID [int]
  864.     Declare @ParentType [int]
  865.  
  866.     Set @StoreID  = -1
  867.     Set @AppID    = -1
  868.     Set @ScopeID  = -1
  869.     Set @Return   = 0 
  870.     
  871.     if @ObjectType = 0 --Store
  872.     Begin
  873.         Set @StoreID = @ID
  874.     End 
  875.     if @ObjectType = 1 -- App
  876.     Begin
  877.         Select @StoreID=StoreID From AzMan_AzApplication where ID = @ID
  878.         SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  879.         
  880.         if @RowCount <> 1
  881.         Begin
  882.             if @Error = 0
  883.             Begin
  884.                 Set @Return = -1168 -- Record not found
  885.             End
  886.             Else
  887.             Begin
  888.                 Set @Return = @Error 
  889.             End
  890.         End
  891.         else
  892.         Begin
  893.             Set @AppID = @ID        
  894.         End
  895.     End
  896.  
  897.     If @ObjectType = 4 -- Scope
  898.     Begin
  899.         Select @AppID   = AppID From [AzMan_AzScope] where ID = @ID
  900.         SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT
  901.         if @RowCount = 1
  902.         Begin
  903.             Select @StoreID = StoreId From AzMan_AzApplication where ID = @AppID
  904.             
  905.             SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT        
  906.             if @RowCount <> 1
  907.             Begin
  908.                 if @Error = 0
  909.                 Begin
  910.                     Set @Return = -1168 -- Record not found
  911.                 End
  912.                 Else
  913.                 Begin
  914.                     Set @Return = @Error 
  915.                 End
  916.             End
  917.             else
  918.             Begin
  919.                 Set @ScopeID = @ID
  920.             End
  921.         End
  922.         else
  923.         Begin
  924.             if @Error = 0
  925.             Begin
  926.                 Set @Return = -1168 -- Record not found
  927.             End
  928.             Else
  929.             Begin
  930.                 Set @Return = @Error 
  931.             End
  932.         End
  933.     End     
  934.     
  935. Return @Return
  936.  
  937. Go  
  938.  
  939. IF EXISTS (SELECT name FROM sysobjects
  940.         WHERE name = 'AzMan_SP_Get_Object_Path' and type = 'P')
  941.     DROP PROCEDURE AzMan_SP_Get_Object_Path
  942. GO
  943.  
  944. Create Procedure [AzMan_SP_Get_Object_Path]
  945. (
  946.  @Return [int] output
  947. ,@ID [int]
  948. ,@ObjectType [tinyint]
  949. ,@StoreID [int] output
  950. ,@AppID [int]   output
  951. ,@ScopeID [int] output
  952. )
  953. AS
  954.     Declare @ParentID [int]
  955.     Declare @ParentType [int]
  956.     DECLARE @RowCount INT, @Error INT
  957.  
  958.     Set @StoreID  = -1
  959.     Set @AppID    = -1
  960.     Set @ScopeID  = -1
  961.     Set @Return   = 0 
  962.     
  963.     if @ObjectType = 0 --Store
  964.     Begin
  965.         Exec AzMan_SP_Get_Object_Path_For_Container @Return output, @ID, @ObjectType , @StoreID output, @AppID output, @ScopeID output
  966.         goto Return_Get_ObjPath     
  967.     End 
  968.     
  969.     if @ObjectType = 1 -- App
  970.     Begin
  971.         Exec AzMan_SP_Get_Object_Path_For_Container @Return output, @ID, @ObjectType , @StoreID output, @AppID output, @ScopeID output
  972.         goto Return_Get_ObjPath     
  973.     End
  974.     
  975.     If @ObjectType = 2 -- Operation
  976.     Begin
  977.         Select @AppID=   AppID From [AzMan_AzOperation] where ID = @ID
  978.         
  979.         SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT        
  980.         if @RowCount <> 1
  981.         Begin
  982.             if @Error = 0
  983.             Begin
  984.                 Set @Return = -1168 -- Record not found
  985.             End
  986.             Else
  987.             Begin
  988.                 Set @Return = @Error 
  989.             End
  990.         End
  991.         Else
  992.         Begin
  993.             Select @StoreID =StoreID From AzMan_AzApplication where ID = @AppID
  994.             SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT
  995.             if @RowCount <> 1
  996.             Begin
  997.                 if @Error = 0
  998.                 Begin
  999.                     Set @Return = -1168 -- Record not found
  1000.                 End
  1001.                 Else
  1002.                 Begin
  1003.                     Set @Return = @Error 
  1004.                 End
  1005.             End
  1006.         End
  1007.         
  1008.         goto Return_Get_ObjPath     
  1009.     End     
  1010.     
  1011.     If @ObjectType = 4 -- Scope
  1012.     Begin
  1013.         Exec AzMan_SP_Get_Object_Path_For_Container @Return output, @ID, @ObjectType , @StoreID output, @AppID output, @ScopeID output
  1014.         goto Return_Get_ObjPath
  1015.     End     
  1016.  
  1017.     If @ObjectType = 3 -- Task
  1018.     Begin
  1019.         Select @ParentID = 
  1020.                 case ParentType
  1021.                     when 1 then AppID
  1022.                     when 4 then ScopeID
  1023.                 end,
  1024.                @ParentType = ParentType from [AzMan_AzTask] where ID = @ID
  1025.         SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT               
  1026.         
  1027.     End
  1028.  
  1029.     If @ObjectType = 5 -- Group
  1030.     Begin
  1031.         Select @ParentID = 
  1032.                 case ParentType
  1033.                     when 0 then StoreID
  1034.                     when 1 then AppID
  1035.                     when 4 then ScopeID 
  1036.                 end,
  1037.               @ParentType = ParentType 
  1038.         from [AzMan_AzApplicationGroup] where ID = @ID
  1039.         SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT        
  1040.     End
  1041.     
  1042.     If @ObjectType = 6 -- Role
  1043.     Begin
  1044.         Select @ParentID =  
  1045.                 case ParentType
  1046.                     when 1 then AppID
  1047.                     when 4 then ScopeID
  1048.                 end,
  1049.             @ParentType = ParentType 
  1050.         from AzMan_AzRoleAssignment where ID = @ID
  1051.         SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT        
  1052.     End
  1053.     
  1054.  
  1055.     if @RowCount <> 1
  1056.     Begin
  1057.         if @Error = 0
  1058.         Begin
  1059.             Set @Return = -1168 -- Record not found
  1060.         End
  1061.         Else
  1062.         Begin
  1063.             Set @Return = @Error 
  1064.         End
  1065.     End
  1066.     else
  1067.     Begin
  1068.         exec AzMan_SP_Get_Object_Path_For_Container @Return output, @ParentID, @ParentType, @StoreID output, @AppID output, @ScopeID output
  1069.     End 
  1070.     
  1071. Return_Get_ObjPath:
  1072.     Return @Return
  1073.  
  1074. Go  
  1075.  
  1076. -- Access Check Store Procedure
  1077.  
  1078. IF EXISTS (SELECT name FROM sysobjects
  1079.         WHERE name = 'AzMan_SP_AccessCheck_For_Container' and type = 'P')
  1080.     DROP PROCEDURE AzMan_SP_AccessCheck_For_Container
  1081. GO
  1082.  
  1083. Create Procedure [AzMan_SP_AccessCheck_For_Container]
  1084. (
  1085.  @Return [int] output
  1086. ,@ID [int] 
  1087. ,@ObjectType [tinyint]
  1088. )
  1089.  
  1090. As
  1091.     -- Check MemberShip starting with current node and going up
  1092.     Declare @SQLRoleName     [nvarchar](64) 
  1093.     Declare @SQLRoleType     [TinyInt]  
  1094.     
  1095.     Set @Return      = -5
  1096.  
  1097.     -- Check Admin
  1098.     
  1099.     Set @SQLRoleType = 1
  1100.     Set @SQLRoleName = ''
  1101.     
  1102.     Exec [AzMan_SP_GetSQLRole] @Return output, @ID, @ObjectType, @SQLRoleType, @SQLRoleName = @SQLRoleName output
  1103.  
  1104.     -- Is a member of admin 
  1105.     
  1106.     if @SQlRoleName <> ''
  1107.     Begin
  1108.         If Is_Member(@SqlRoleName) = 1
  1109.         Begin
  1110.             Set @Return = 1 -- Admin Access
  1111.             Goto Exit_AzMan_SP_AccessCheck_For_Container
  1112.         End
  1113.     End
  1114.  
  1115.     -- Is a member of Reader?
  1116.  
  1117.     Set @SQLRoleType = 2
  1118.     Set @SQLRoleName = ''   
  1119.     
  1120.     Exec [AzMan_SP_GetSQLRole] @Return output, @ID, @ObjectType, @SQLRoleType, @SQLRoleName = @SQLRoleName output
  1121.     
  1122.     if @SQlRoleName <> ''
  1123.     Begin
  1124.         If Is_Member(@SqlRoleName) = 1
  1125.         Begin
  1126.             Set @Return = 2 -- Reader Access
  1127.             Goto Exit_AzMan_SP_AccessCheck_For_Container
  1128.         End
  1129.     End
  1130.     
  1131.     
  1132.     -- Is a member of Delegated Users?
  1133.  
  1134.     Set @SQLRoleType = 3
  1135.     Set @SQLRoleName = ''   
  1136.     
  1137.     Exec [AzMan_SP_GetSQLRole] @Return output, @ID, @ObjectType, @SQLRoleType, @SQLRoleName = @SQLRoleName output
  1138.     
  1139.     if @SQlRoleName <> ''
  1140.     Begin
  1141.         If Is_Member(@SqlRoleName) = 1
  1142.         Begin
  1143.             Set @Return = 3 -- Delegated user Access
  1144.             Goto Exit_AzMan_SP_AccessCheck_For_Container
  1145.         End
  1146.     End
  1147.     
  1148.     
  1149. Exit_AzMan_SP_AccessCheck_For_Container:
  1150.     Return  @Return
  1151. GO
  1152.  
  1153. IF EXISTS (SELECT name FROM sysobjects
  1154.         WHERE name = 'AzMan_SP_AccessCheck' and type = 'P')
  1155.     DROP PROCEDURE AzMan_SP_AccessCheck
  1156. GO
  1157.  
  1158. Create Procedure [AzMan_SP_AccessCheck]
  1159. (
  1160.  @Return [int] output
  1161. ,@AccessAtObjType [tinyint] output 
  1162. ,@ID [int] 
  1163. ,@ObjectType [tinyint]
  1164. ,@CheckSacl [bit] = 0
  1165. ,@SaclIsOn [bit] output
  1166. )
  1167.  
  1168. As
  1169.     -- Check MemberShip starting with current node and going up
  1170.     Declare @SQLRoleName     [nvarchar](64) 
  1171.     Declare @SQLRoleType     [TinyInt]  
  1172.     
  1173.     Declare @StoreID        [int] 
  1174.     Declare @AppID          [int]   
  1175.     Declare @ScopeID        [int] 
  1176.     Declare @StoreAccess    [int]
  1177.     
  1178.     -- If this bit is set we know access check result, but we need to do SACL
  1179.     Declare @CheckSaclOnly  [int]
  1180.     Declare @TempRet [int]
  1181.     
  1182.     Set @Return      = -5
  1183.     Set @StoreAccess = -5   
  1184.     Set @AccessAtObjType = 0
  1185.     
  1186.     -- default to SACL off
  1187.     Set @SaclIsOn = 0
  1188.     Set @CheckSaclOnly = 0
  1189.     
  1190.     -- If the user is a DB_Owner, he has full control
  1191.     
  1192.     if  Is_Member('db_owner') = 1
  1193.         Begin
  1194.             set @Return = 1
  1195.             --print 'User is member of db_Owner'
  1196.             IF @CheckSacl = 0
  1197.                 Goto Exit_AzMan_SP_AccessCheck
  1198.             ELSE
  1199.                 Set @CheckSaclOnly = 1
  1200.         End
  1201.     else if  Is_Member('db_datawriter') = 1
  1202.         -- If the user is a data writer he has full control
  1203.         Begin
  1204.             set @Return = 1
  1205.             --print 'User is member of db_datawriter' 
  1206.             IF @CheckSacl = 0
  1207.                 Goto Exit_AzMan_SP_AccessCheck
  1208.             ELSE
  1209.                 Set @CheckSaclOnly = 1
  1210.         End
  1211.     else if  Is_Member('db_datareader') = 1
  1212.         -- If the user is a data reader he has read control
  1213.         Begin
  1214.             set @Return = 2
  1215.             --print 'User is member of db_datareader' 
  1216.             IF @CheckSacl = 0
  1217.                 Goto Exit_AzMan_SP_AccessCheck
  1218.             ELSE
  1219.                 Set @CheckSaclOnly = 1
  1220.         End
  1221.     
  1222.     IF @CheckSaclOnly = 1
  1223.         Set @TempRet = @Return
  1224.         
  1225.     -- Go all the way up to the store
  1226.     -- Check Access from top to bottom
  1227.     
  1228.     Exec AzMan_SP_Get_Object_Path @Return output, @ID, @ObjectType , @StoreID output, @AppID output, @ScopeID output    
  1229.     
  1230.     -- Error ? Record not found 
  1231.     if @Return < 0
  1232.     Begin
  1233.         goto Exit_AzMan_SP_AccessCheck  
  1234.     End
  1235.     
  1236.     -- we honor application's SACL setting over the store's
  1237.     IF @CheckSacl = 1 AND @StoreID <> -1 AND @AppID <> -1
  1238.         BEGIN
  1239.             SELECT @SaclIsOn = IsNull(ApplyStoreSacl, 0) FROM AzMan_AzApplication App WHERE App.ID = @AppID AND App.StoreID = @StoreID
  1240.         END
  1241.     ELSE IF @CheckSacl = 1 AND @StoreID <> -1
  1242.         BEGIN
  1243.             SELECT @SaclIsOn = IsNull(ApplyStoreSacl, 0) FROM AzMan_AzAuthorizationStore Store WHERE Store.ID = @StoreID
  1244.         END
  1245.             
  1246.     -- if we are only to check SACL settings (in other words, we already know the answer of access)
  1247.     IF @CheckSaclOnly = 1
  1248.         Goto Exit_AzMan_SP_AccessCheck
  1249.         
  1250.     if @StoreID <> -1
  1251.     Begin
  1252.         set @AccessAtObjType = 0
  1253.         Exec AzMan_SP_AccessCheck_For_Container @Return output, @StoreID, 0
  1254.         Set @StoreAccess = @Return
  1255.         if @Return <= 2
  1256.         Begin
  1257.             Goto Exit_AzMan_SP_AccessCheck
  1258.         End
  1259.     End
  1260.     else
  1261.     Begin
  1262.         Goto Exit_AzMan_SP_AccessCheck      
  1263.     End
  1264.     
  1265.     if @AppID <> -1
  1266.     Begin
  1267.         set @AccessAtObjType = 1
  1268.         Exec AzMan_SP_AccessCheck_For_Container @Return output, @AppID, 1
  1269.         if @Return <= 2
  1270.         Begin
  1271.             Goto Exit_AzMan_SP_AccessCheck
  1272.         End
  1273.     End
  1274.     else
  1275.     Begin
  1276.         Goto Exit_AzMan_SP_AccessCheck  
  1277.     End
  1278.  
  1279.     if @ScopeID <> -1
  1280.     Begin
  1281.         set @AccessAtObjType = 4
  1282.         Exec AzMan_SP_AccessCheck_For_Container @Return output, @ScopeID, 4
  1283.         if @Return <= 2 
  1284.         Begin
  1285.             Goto Exit_AzMan_SP_AccessCheck
  1286.         End
  1287.     End
  1288.     Begin
  1289.         Goto Exit_AzMan_SP_AccessCheck  
  1290.     End
  1291.     
  1292.     
  1293. Exit_AzMan_SP_AccessCheck:
  1294.  
  1295.     IF @CheckSaclOnly = 1
  1296.         Set @Return = @TempRet
  1297.         
  1298.     Return  @Return
  1299.  
  1300.  
  1301. GO
  1302.  
  1303. Create PROCEDURE dbo.AzMan_SPS_Get_StoreIDByName
  1304. (
  1305.     @Return [int] output,
  1306.     @ID int OUTPUT,    
  1307.     @Name nvarchar(512)
  1308. )
  1309. AS
  1310. Set @ID = -1    -- this means it doesn't exist
  1311. Set @Return = 0 
  1312.  
  1313. SELECT @ID = ID FROM AzMan_AzAuthorizationStore WHERE Name = @Name
  1314.  
  1315. RETURN @@RowCount
  1316.  
  1317. go
  1318.  
  1319. Create Procedure [AzMan_SP_Check_Dup_Task_For_Given_Parent]
  1320. (
  1321.     @Return [int] output,
  1322.     @ParentID    [int],
  1323.     @ParentType     [tinyint] ,
  1324.     @ID [int],
  1325.     @Name           [nvarchar](64) 
  1326. )
  1327. AS
  1328.  
  1329. Set @Return = 0
  1330.  
  1331.     -- Make sure that the name doesn't exist at the same level
  1332.     
  1333.     if @ParentType = 1
  1334.     Begin
  1335.         if Exists( Select [Name] from 
  1336.             [dbo].[AzMan_AzTask] 
  1337.         where 
  1338.             ParentType = @ParentType and
  1339.             AppID      = @ParentID   and        
  1340.             ID <> IsNULL(@ID,0) and
  1341.             LOWER([Name]) = LOWER(@Name) )
  1342.         Begin
  1343.             Set @Return = -183  -- Same Name exist
  1344.         End
  1345.     End
  1346.     else if @ParentType = 4
  1347.     Begin
  1348.         if Exists( Select [Name] from 
  1349.             [dbo].[AzMan_AzTask] 
  1350.         where 
  1351.             ParentType = @ParentType and
  1352.             ScopeID    = @ParentID   and        
  1353.             ID <> IsNULL(@ID,0) and
  1354.             LOWER([Name]) = LOWER(@Name) )
  1355.         Begin
  1356.             Set @Return = -183  -- Same Name exist
  1357.         End
  1358.     End
  1359.     else
  1360.     Begin
  1361.         Set @Return = -87   -- invalid parameter
  1362.     End
  1363. Return @Return
  1364.  
  1365. go 
  1366.  
  1367. Create Procedure [AzMan_SP_Check_Dup_Task]
  1368. (
  1369.     @Return [int] output,
  1370.     @ParentID    [int],
  1371.     @ParentType     [tinyint] ,
  1372.     @ID [int],
  1373.     @Name           [nvarchar](64) 
  1374. )
  1375. AS
  1376.  
  1377. Declare @ParentAppID [int]
  1378.  
  1379. Set @Return = 0
  1380. Set @ParentAppID = 0
  1381.  
  1382.     -- First Check the current Parent
  1383.     exec AzMan_SP_Check_Dup_Task_For_Given_Parent @Return output, @ParentID, @ParentType, @ID, @Name
  1384.     
  1385.     if  @Return <> 0 
  1386.     Begin
  1387.         Return(@Return)
  1388.     End
  1389.     
  1390.     -- Behave differently depending on the object type of the parent object
  1391.     
  1392.     -- A task that is a child of an application
  1393.     --  cannot have the same name as any tasks that are children of any of the child scopes.
  1394.     
  1395.     if @ParentType = 1        -- Application
  1396.     Begin
  1397.         Set @ParentAppID = @ParentID
  1398.         if Exists( Select [Name] from 
  1399.             [dbo].[AzMan_AzTask] 
  1400.         where 
  1401.             ( ParentType = 4 ) -- All Child scope
  1402.                 and 
  1403.                 LOWER([Name]) = LOWER(@Name)  and 
  1404.                 (@ParentID IN ( Select AppID from Azman_AzScope where AppID = @ParentID and ID <> IsNULL(@ID,0)) ) )
  1405.             
  1406.         Begin
  1407.             Set @Return = -183  -- Same Name exist
  1408.         End
  1409.     End
  1410.     else if @ParentType = 4        -- Scope
  1411.     Begin
  1412.     -- A task that is a child of a scope,
  1413.     --  cannot have the same name as tasks that are children of the application.
  1414.     
  1415.         -- Find the Parent App
  1416.         Select @ParentAppID = [AppId] 
  1417.         from AzMan_AzScope
  1418.         where [ID] = @ParentID
  1419.         
  1420.         if ( @ParentAppID = 0 )
  1421.         Begin
  1422.             Set @Return = -1 -- General Error
  1423.         End
  1424.         else
  1425.         Begin
  1426.             exec AzMan_SP_Check_Dup_Task_For_Given_Parent @Return output, @ParentAppID, 1, @ID, @Name
  1427.         End
  1428.     End
  1429.     
  1430.     -- Tasks and operations share a namespace so ensure there 
  1431.     -- isn't an operation by this name.            
  1432.     if  @Return = 0 
  1433.     Begin
  1434.         if Exists( Select [Name] from 
  1435.             [dbo].[AzMan_AzOperation] 
  1436.         where 
  1437.             LOWER([Name]) = LOWER(@Name) and
  1438.             (@ParentAppID = AppID) )
  1439.         Begin
  1440.             Set @Return = -183  -- Same Name exist
  1441.         End
  1442.     End
  1443.     
  1444.  
  1445. Return @Return
  1446.  
  1447. go 
  1448.  
  1449. Create Procedure [AzMan_SP_Check_Dup_RoleAssignment]
  1450. (
  1451.     @Return [int] output,
  1452.     @ParentID   [int],
  1453.     @ParentType [tinyint],
  1454.     @ID [int],
  1455.     @Name [nvarchar](64) 
  1456. )
  1457. AS
  1458.  
  1459. Set @Return = 0
  1460.  
  1461.     if @ParentType = 1
  1462.     Begin   
  1463.         if Exists( Select [Name] from 
  1464.             [dbo].[AzMan_AzRoleAssignment] 
  1465.         where 
  1466.             ParentType = @ParentType and
  1467.             AppID =   @ParentID and
  1468.             ID <> IsNULL(@ID,0) and
  1469.             LOWER([Name]) = LOWER(@Name) )
  1470.         Begin
  1471.             Set @Return = -183  -- Same Name exist
  1472.         End
  1473.     End
  1474.     else if @ParentType = 4
  1475.     Begin
  1476.         if Exists( Select [Name] from 
  1477.             [dbo].[AzMan_AzRoleAssignment] 
  1478.         where 
  1479.             ParentType = @ParentType and
  1480.             ScopeID =   @ParentID and
  1481.             ID <> IsNULL(@ID,0) and
  1482.             LOWER([Name]) = LOWER(@Name) )
  1483.         Begin
  1484.             Set @Return = -183  -- Same Name exist
  1485.         End
  1486.     End
  1487.     Else
  1488.     Begin
  1489.         Set @Return = -1
  1490.     End
  1491.  
  1492. Return @Return
  1493.  
  1494. go 
  1495.  
  1496. Create Procedure [AzMan_SP_Check_Dup_Application]
  1497. (
  1498.     @Return [int] output,
  1499.     @StoreID    [int],
  1500.     @ID [int],
  1501.     @Name [nvarchar](512) 
  1502. )
  1503. AS
  1504.  
  1505.  
  1506.  
  1507. Set @Return = 0
  1508.  
  1509.     -- Make sure that the name doesn't exist at the same level
  1510.     
  1511.     if Exists( Select [Name] from 
  1512.         [dbo].[AzMan_AzApplication] 
  1513.     where 
  1514.         StoreID =   @StoreID and ID <> IsNULL(@ID,0) and
  1515.         LOWER([Name]) = LOWER(@Name) )
  1516.     Begin
  1517.         Set @Return = -183  -- Same Name exist
  1518.     End
  1519.  
  1520. Return @Return
  1521.  
  1522. go 
  1523.  
  1524.  
  1525. Create Procedure [AzMan_SP_Check_Dup_Scope]
  1526. (
  1527.     @Return [int] output,
  1528.     @AppID  [int],
  1529.     @ID [int],
  1530.     @NameHash [binary] (32)
  1531. )
  1532. AS
  1533.     Set @Return = 0
  1534.     -- Make sure that the name doesn't exist at the same level
  1535.  
  1536.     begin
  1537.         if Exists( Select ID from 
  1538.             [dbo].[AzMan_AzScope] 
  1539.         where 
  1540.             ID          <>  IsNULL(@ID,0) and
  1541.             AppID       =   @AppID and
  1542.             [NameHash]  = @NameHash )
  1543.         Begin
  1544.             Set @Return = -183  -- Same Name exist
  1545.         End
  1546.     end
  1547.  
  1548. Return @Return
  1549.  
  1550.  
  1551.  
  1552. go
  1553.  
  1554. Create Procedure [AzMan_SP_Check_Dup_Operation]
  1555. (
  1556.     @Return [int] output,
  1557.     @AppID  [int],
  1558.     @ID [int],
  1559.     @Name [nvarchar](64) 
  1560. )
  1561. AS
  1562.  
  1563. Set @Return = 0
  1564.  
  1565.     -- Make sure that the name doesn't exist at the same level
  1566.     
  1567.     if Exists( Select [Name] from 
  1568.         [dbo].[AzMan_AzOperation] 
  1569.     where 
  1570.         AppID =   @AppID and
  1571.         ID <> IsNULL(@ID,0) and 
  1572.         LOWER([Name]) = LOWER(@Name) )
  1573.     Begin
  1574.         Set @Return = -183  -- Same Name exist
  1575.     End
  1576.  
  1577. Return @Return
  1578.  
  1579. go 
  1580.  
  1581.  
  1582. Create Procedure [AzMan_SP_Check_Dup_Group_For_Given_Parent]
  1583. (
  1584.     @Return [int] output,
  1585.     @ParentID   [int],
  1586.     @ParentType [tinyint] ,
  1587.     @ID [int],
  1588.     @Name [nvarchar](64) 
  1589. )
  1590. AS
  1591.     Set @Return = 0
  1592.         
  1593.     if @ParentType = 0
  1594.     Begin
  1595.         
  1596.     if Exists( Select [Name] from 
  1597.         [dbo].[AzMan_AzApplicationGroup] 
  1598.     where 
  1599.         ( ParentType = @ParentType ) 
  1600.         and (StoreID = @ParentID)
  1601.         and LOWER([Name]) = LOWER(@Name) 
  1602.         and ID <> IsNULL(@ID,0) )
  1603.     Begin
  1604.         Set @Return = -183  -- Same Name exist
  1605.     End
  1606.         
  1607.     End
  1608.     else if @ParentType = 1
  1609.     Begin
  1610.         if Exists( Select [Name] from 
  1611.             [dbo].[AzMan_AzApplicationGroup] 
  1612.         where 
  1613.             ( ParentType = @ParentType ) 
  1614.             and (AppID = @ParentID)
  1615.             and LOWER([Name]) = LOWER(@Name) 
  1616.             and ID <> IsNULL(@ID,0) )
  1617.         Begin
  1618.             Set @Return = -183  -- Same Name exist
  1619.         End
  1620.  
  1621.     End
  1622.     else if @ParentType = 4
  1623.     Begin
  1624.         if Exists( Select [Name] from 
  1625.             [dbo].[AzMan_AzApplicationGroup] 
  1626.         where 
  1627.             ( ParentType = @ParentType ) 
  1628.             and (ScopeID = @ParentID)
  1629.             and LOWER([Name]) = LOWER(@Name) 
  1630.             and ID <> IsNULL(@ID,0) )
  1631.         Begin
  1632.             Set @Return = -183  -- Same Name exist
  1633.         End
  1634.  
  1635.     End
  1636.     Else
  1637.     Begin
  1638.         Set @Return = -1
  1639.         Return (@Return)
  1640.     End
  1641.     
  1642. Return(@Return)
  1643.  
  1644. GO  
  1645.  
  1646. Create Procedure [AzMan_SP_Check_Dup_Group]
  1647. (
  1648.     @Return [int] output,
  1649.     @ParentID   [int],
  1650.     @ParentType [tinyint] ,
  1651.     @ID [int],
  1652.     @Name [nvarchar](64) 
  1653. )
  1654. AS
  1655.  
  1656. Declare @ParentStore [int]
  1657. Declare @ParentAppID [int]
  1658.  
  1659. Set @Return = 0
  1660. Set @ParentStore = 0
  1661. Set @ParentAppID = 0
  1662.  
  1663.     
  1664.     -- First Check the current Parent
  1665.     exec AzMan_SP_Check_Dup_Group_For_Given_Parent @Return output, @ParentID, @ParentType, @ID, @Name
  1666.     
  1667.     if  @Return <> 0 
  1668.     Begin
  1669.         Return(@Return)
  1670.     End
  1671.  
  1672.     -- Behave differently depending on the object type of the parent object
  1673.     --
  1674.     -- A group that is a child of the authorization store,
  1675.     --  cannot have the same name as any groups that are children of any of the child applications, and
  1676.     --  cannot have the same name as any groups that are children of any of the grandchild child scopes.
  1677.  
  1678.         if @ParentType = 0      -- Auth Store
  1679.         Begin
  1680.  
  1681.             if Exists( Select ID from 
  1682.                 [dbo].[AzMan_AzApplicationGroup] 
  1683.             where 
  1684.                  ( ( ID <> IsNULL(@ID,0) ) and
  1685.                    ( [Name] = @Name )      and
  1686.                    (   (   ( ParentType = 1 ) and       -- Application
  1687.                            ( AppID in ( select ID from AzMan_AzApplication where StoreID = @ParentID ) )
  1688.                         )
  1689.                     or 
  1690.                         (  ( ParentType = 4 ) and   -- Scope
  1691.                            ( ScopeID in ( select ID from AzMan_AzScope 
  1692.                                             where AppID in (select ID from AzMan_AzApplication where StoreID = @ParentID) ) )
  1693.                         )
  1694.                     ) 
  1695.                  ) 
  1696.             )
  1697.             Begin
  1698.                 Set @Return = -183  -- Same Name exist
  1699.             End
  1700.         End
  1701.         else if @ParentType = 1     -- Application
  1702.         Begin
  1703.         
  1704.             -- A group that is a child of an application
  1705.             --  cannot have the same name as groups that are children of the authorization store,
  1706.             --  and cannot have the same name as any groups that are children of any of the child scopes.
  1707.             
  1708.             -- Find the parent of Application 
  1709.             
  1710.             Select @ParentStore = [StoreId] 
  1711.             from AzMan_AzApplication
  1712.             where [ID] = @ParentID
  1713.             
  1714.             if ( @ParentStore = 0 )
  1715.             Begin
  1716.                 Set @Return = -1 -- General Error
  1717.             End
  1718.             Else
  1719.             Begin
  1720.                 -- and Check for conflict 
  1721.                 exec AzMan_SP_Check_Dup_Group_For_Given_Parent @Return output, @ParentStore, 0, @ID, @Name
  1722.             End
  1723.             
  1724.             if ( @Return = 0 )
  1725.             Begin
  1726.                 -- Find All the Child scopes of parent and check for conflicts
  1727.                 
  1728.                 if Exists( Select [Name] from 
  1729.                     [dbo].[AzMan_AzApplicationGroup] 
  1730.                 where 
  1731.                     ( ParentType = 4 ) -- All Child scope
  1732.                       and 
  1733.                       LOWER([Name]) = LOWER(@Name)  and 
  1734.                      (@ParentID IN ( Select AppID from Azman_AzScope where AppID = @ParentID and ID <> IsNULL(@ID,0)) ) )
  1735.  
  1736.                     
  1737.                 Begin
  1738.                     Set @Return = -183  -- Same Name exist
  1739.                 End
  1740.             End             
  1741.         End
  1742.         else if @ParentType = 4     -- Scope
  1743.         Begin
  1744.             -- A group that is a child of a scope,
  1745.             -- cannot have the same name as groups that are children of the application or authorization store
  1746.             
  1747.             -- Find the Parent App
  1748.             Select @ParentAppID = [AppId] 
  1749.             from AzMan_AzScope
  1750.             where [ID] = @ParentID
  1751.             
  1752.             if ( @ParentAppID = 0 )
  1753.             Begin
  1754.                 Set @Return = -1 -- General Error
  1755.             End
  1756.             else
  1757.             Begin
  1758.                 exec AzMan_SP_Check_Dup_Group_For_Given_Parent @Return output, @ParentAppID, 1, @ID, @Name
  1759.                 
  1760.                 if  @Return = 0 
  1761.                 Begin
  1762.             
  1763.                     -- Find the Parent Store
  1764.                     Select @ParentStore = [StoreId] 
  1765.                     from AzMan_AzApplication
  1766.                     where [ID] = @ParentAppID
  1767.                     
  1768.                     if ( @ParentStore = 0 )
  1769.                     Begin
  1770.                         Set @Return = -1 -- General Error
  1771.                     End
  1772.                     else
  1773.                     Begin
  1774.                         exec AzMan_SP_Check_Dup_Group_For_Given_Parent @Return output, @ParentStore, 0, @ID, @Name
  1775.                     End
  1776.                 End             
  1777.             End         
  1778.         End         
  1779.  
  1780. Return(@Return)
  1781.  
  1782. GO
  1783.  
  1784. Create Procedure [AzMan_SPI_AzAuthorizationStore]
  1785. -- Inserts a new record in [AzMan_AzAuthorizationStore] table
  1786. (
  1787.   @Return       [int]   output  
  1788. , @ID [int] OUTPUT                            
  1789. , @ObjectGuid [uniqueidentifier] = Null     
  1790. , @DomainTimeout [int] = Null               
  1791. , @ScriptEngineTimeout [int] = Null         
  1792. , @MaxScriptEngines [int] = Null            
  1793. , @ApplyStoreSacl [bit] = Null              
  1794. , @GenerateAudits [bit] = 0                 
  1795. , @MajorVersion [int] = 1                   
  1796. , @MinorVersion [int] = 0                   
  1797. , @TargetMachine [nvarchar](50) = Null      
  1798. , @Description [nvarchar](1024) = Null      
  1799. , @Name [nvarchar] (512)        = NULL
  1800. , @ApplicationData [ntext] = Null           
  1801.  
  1802. ) as 
  1803.  
  1804.     DECLARE @RowCount INT, @Error INT
  1805.     
  1806.     Set @Return = 0
  1807.     Set @ID     = 0 
  1808.  
  1809.     Set NoCount On
  1810.     
  1811.     Begin
  1812.         Insert Into [dbo].[AzMan_AzAuthorizationStore]
  1813.         (
  1814.               [ObjectGuid]
  1815.             , [Name]
  1816.             , [Description]
  1817.             , [ApplicationData]
  1818.             , [DomainTimeout]
  1819.             , [ScriptEngineTimeout]
  1820.             , [MaxScriptEngines]
  1821.             , [TargetMachine]
  1822.             , [ApplyStoreSacl]
  1823.             , [GenerateAudits]
  1824.             , [MajorVersion]
  1825.             , [MinorVersion]
  1826.         )
  1827.  
  1828.         Values
  1829.         (
  1830.              @ObjectGuid
  1831.             , @Name
  1832.             , @Description
  1833.             , @ApplicationData
  1834.             , @DomainTimeout
  1835.             , @ScriptEngineTimeout
  1836.             , @MaxScriptEngines
  1837.             , @TargetMachine
  1838.             , @ApplyStoreSacl
  1839.             , @GenerateAudits
  1840.             , @MajorVersion
  1841.             , @MinorVersion
  1842.         )
  1843.  
  1844.         SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  1845.         if @RowCount = 1 
  1846.         Begin
  1847.             Set @ID = Cast(SCOPE_IDENTITY() As [int])
  1848.         End         
  1849.         else
  1850.         Begin
  1851.             Set @Return = @Error
  1852.         End
  1853.         
  1854.         -- generate a generic audit
  1855.         EXEC [AzMan_SP_GenerateGenericAudit]
  1856.                 @Return,
  1857.                 0,  -- 0 for store
  1858.                 @Name,
  1859.                 @ObjectGuid,
  1860.                 N'Trying to create an AzAuthorizationStore'
  1861.                 
  1862.         -- generate an audit
  1863.  
  1864.         EXEC [AzMan_SP_GenerateObjectAudit]
  1865.                 @Return,
  1866.                 0,  -- 0 for SE_AUDITID_AZ_SQL_OBJECT_CREATE
  1867.                 0,  -- 0 for store
  1868.                 @Name,
  1869.                 @ObjectGuid,
  1870.                 0,  -- 0 for store
  1871.                 @Name,
  1872.                 @ObjectGuid,
  1873.                 N'' -- no other info
  1874.                 
  1875.     End
  1876. Set NoCount Off
  1877.  
  1878. Return(@Return)
  1879.  
  1880. GO
  1881.  
  1882. Create Procedure [AzMan_SPI_AzApplication]
  1883.  
  1884. -- Inserts a new record in [AzMan_AzApplication] table
  1885. (
  1886.   @Return       [int]   output      
  1887. , @ID [int] = Null Output                   
  1888. , @ObjectGuid [uniqueidentifier] = Null     
  1889. , @StoreId [int]                    
  1890. , @ApplyStoreSacl [bit] = Null              
  1891. , @GenerateAudits [bit] = Null              
  1892. , @AuthzInterfaceClsId [int] = Null         
  1893. , @CheckDup [bit] = 1
  1894. , @ApplicationVersion [nvarchar](50) = Null 
  1895. , @Name [nvarchar](512) = Null              
  1896. , @Description [nvarchar](1024) = Null      
  1897. , @ApplicationData [ntext] = Null           
  1898. )
  1899.  
  1900. As
  1901.  
  1902. Set NoCount On
  1903.  
  1904.     Begin
  1905.     
  1906.     DECLARE @RowCount INT, @Error INT
  1907.     DECLARE @storeName [nvarchar](512)
  1908.     DECLARE @storeGuid [uniqueidentifier]
  1909.     Declare @AccessAtObjType [tinyint]
  1910.     
  1911.     DECLARE @SaclIsOn [bit]
  1912.     Set @SaclIsOn = 0
  1913.     Set @Return = 0
  1914.     
  1915.         Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output, @StoreID, 0, 1, @SaclIsOn output
  1916.         
  1917.         -- Require Admin Access
  1918.         if @Return <> 1 
  1919.         Begin
  1920.             if (@Return >= 2)
  1921.             Begin
  1922.                 Set @Return = -5 
  1923.             End
  1924.             goto Done
  1925.         End
  1926.     
  1927.         -- Check for duplicate name 
  1928.         IF @CheckDup = 1
  1929.             BEGIN
  1930.                 Exec AzMan_SP_Check_Dup_Application @Return output, @StoreID, @ID, @Name
  1931.             END
  1932.         ELSE
  1933.             Set @Return = 0
  1934.             
  1935.         if @Return = 0 
  1936.         Begin
  1937.  
  1938.             Insert Into [dbo].[AzMan_AzApplication]
  1939.             (
  1940.                   [ObjectGuid]
  1941.                 , [StoreId]
  1942.                 , [Name]
  1943.                 , [Description]
  1944.                 , [ApplicationData]
  1945.                 , [ApplyStoreSacl]
  1946.                 , [GenerateAudits]
  1947.                 , [AuthzInterfaceClsId]
  1948.                 , [ApplicationVersion]
  1949.             )
  1950.  
  1951.             Values
  1952.             (
  1953.                   @ObjectGuid
  1954.                 , @StoreId
  1955.                 , @Name
  1956.                 , @Description
  1957.                 , @ApplicationData
  1958.                 , @ApplyStoreSacl
  1959.                 , @GenerateAudits
  1960.                 , @AuthzInterfaceClsId
  1961.                 , @ApplicationVersion
  1962.             )
  1963.  
  1964.             SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  1965.             If @RowCount = 1
  1966.             Begin
  1967.                 Set @ID = Cast(SCOPE_IDENTITY() As [int])
  1968.             End
  1969.             Else
  1970.             Begin
  1971.                 Set @Return = @Error
  1972.             End
  1973.             
  1974.             -- generate an audit if SACL is on
  1975.             IF @SaclIsOn = 1
  1976.                 BEGIN
  1977.                     -- get the store info
  1978.                     SELECT @storeName = Store.Name, @storeGuid = Store.ObjectGuid FROM [dbo].[AzMan_AzAuthorizationStore] Store
  1979.                         WHERE Store.ID = @StoreID
  1980.  
  1981.                     -- generate an audit
  1982.                     EXEC [AzMan_SP_GenerateObjectAudit]
  1983.                         @Return,
  1984.                         0,  -- 0 for SE_AUDITID_AZ_SQL_OBJECT_CREATE
  1985.                         0,  -- 0 for store
  1986.                         @storeName,
  1987.                         @storeGuid,
  1988.                         1,  -- 1 for Application
  1989.                         @Name,
  1990.                         @ObjectGuid,
  1991.                         N'' -- no other info
  1992.                END
  1993.         End         
  1994.     End
  1995.  
  1996. Done:
  1997.  
  1998. Set NoCount Off
  1999.  
  2000. Return(@Return)
  2001.  
  2002. GO
  2003.  
  2004. Create Procedure [AzMan_SPU_AzApplication]
  2005.  
  2006. -- Update an existing record in [AzMan_AzApplication] table
  2007.  
  2008. (
  2009.   @Return       [int]   output  
  2010. , @ID [int] 
  2011. , @StoreId [int]                    
  2012. , @ConsiderNull_Description bit = 0
  2013. , @ConsiderNull_ApplicationData bit = 0
  2014. , @ApplyStoreSacl [bit] = Null                      
  2015. , @ConsiderNull_ApplyStoreSacl bit = 0
  2016. , @GenerateAudits [bit] = Null                      
  2017. , @ConsiderNull_GenerateAudits bit = 0
  2018. , @AuthzInterfaceClsId [int] = Null                 
  2019. , @ConsiderNull_AuthzInterfaceClsId bit = 0
  2020. , @ConsiderNull_ApplicationVersion bit = 0
  2021. , @ApplicationVersion [nvarchar](50) = Null         
  2022. , @Name [nvarchar](512) 
  2023. , @Description [nvarchar](1024) = Null              
  2024. , @ApplicationData [ntext] = Null                   
  2025.  
  2026. )
  2027.  
  2028. As
  2029. DECLARE @ObjectGuid uniqueidentifier
  2030. Declare @AccessAtObjType [tinyint]
  2031. DECLARE @SaclIsOn [bit]
  2032. Set @SaclIsOn = 0
  2033.  
  2034. Set NoCount On
  2035.  
  2036.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 0, 1, @SaclIsOn output
  2037.     
  2038.     -- Require Admin Access
  2039.     if @Return <> 1 
  2040.     Begin
  2041.         if (@Return >= 2)
  2042.         Begin
  2043.             Set @Return = -5
  2044.         End
  2045.         goto Done
  2046.     End
  2047.  
  2048. Set @Return = 0
  2049.  
  2050. If @ConsiderNull_Description Is Null
  2051.     Set @ConsiderNull_Description = 0
  2052.  
  2053. If @ConsiderNull_ApplicationData Is Null
  2054.     Set @ConsiderNull_ApplicationData = 0
  2055.  
  2056. If @ConsiderNull_ApplyStoreSacl Is Null
  2057.     Set @ConsiderNull_ApplyStoreSacl = 0
  2058.  
  2059. If @ConsiderNull_GenerateAudits Is Null
  2060.     Set @ConsiderNull_GenerateAudits = 0
  2061.  
  2062. If @ConsiderNull_AuthzInterfaceClsId Is Null
  2063.     Set @ConsiderNull_AuthzInterfaceClsId = 0
  2064.  
  2065. If @ConsiderNull_ApplicationVersion Is Null
  2066.     Set @ConsiderNull_ApplicationVersion = 0
  2067.  
  2068.  
  2069.     IF @Name Is Not NULL
  2070.     Begin
  2071.         -- Check for duplicate name 
  2072.         Exec AzMan_SP_Check_Dup_Application @Return output, @StoreID, @ID, @Name
  2073.     End
  2074.     
  2075.     If @Return = 0 
  2076.     Begin 
  2077.         Update [dbo].[AzMan_AzApplication]
  2078.  
  2079.         Set
  2080.             [Name] = IsNull(@Name, [Name]) 
  2081.             ,[Description] = Case @ConsiderNull_Description When 0 Then IsNull(@Description, [Description]) When 1 Then @Description End
  2082.             ,[ApplicationData] = Case @ConsiderNull_ApplicationData When 0 Then IsNull(@ApplicationData, [ApplicationData]) When 1 Then @ApplicationData End
  2083.             ,[ApplyStoreSacl] = Case @ConsiderNull_ApplyStoreSacl When 0 Then IsNull(@ApplyStoreSacl, [ApplyStoreSacl]) When 1 Then @ApplyStoreSacl End
  2084.             ,[GenerateAudits] = Case @ConsiderNull_GenerateAudits When 0 Then IsNull(@GenerateAudits, [GenerateAudits]) When 1 Then @GenerateAudits End
  2085.             ,[AuthzInterfaceClsId] = Case @ConsiderNull_AuthzInterfaceClsId When 0 Then IsNull(@AuthzInterfaceClsId, [AuthzInterfaceClsId]) When 1 Then @AuthzInterfaceClsId End
  2086.             ,[ApplicationVersion] = Case @ConsiderNull_ApplicationVersion When 0 Then IsNull(@ApplicationVersion, [ApplicationVersion]) When 1 Then @ApplicationVersion End
  2087.  
  2088.         Where
  2089.             ([ID] = @ID)
  2090.     End              
  2091.  
  2092.     -- generate an audit if SACL is on
  2093.     IF @SaclIsOn = 1
  2094.         BEGIN
  2095.             -- get info for auditing
  2096.             SELECT @ObjectGuid = app.ObjectGuid FROM [dbo].[AzMan_AzApplication] app
  2097.                 WHERE app.ID = @ID
  2098.  
  2099.             -- generate an audit
  2100.             EXEC [AzMan_SP_GenerateGenericAudit]
  2101.                     @Return,
  2102.                     1,  -- 0 for application
  2103.                     @Name,
  2104.                     @ObjectGuid,
  2105.                     N'The shallow properties of the application may have been modified'
  2106.         END
  2107.         
  2108. Done:
  2109. Set NoCount Off
  2110.  
  2111. Return(@Return)
  2112.  
  2113.  
  2114. GO
  2115.  
  2116. Create Procedure [AzMan_SPI_AzScope]
  2117.  
  2118. -- Inserts a new record in [AzMan_AzScope] table
  2119. (
  2120.   @Return       [int]   output  
  2121. , @ID [int] = Null      output
  2122. , @AppId [int] = Null                       
  2123. , @NameLen [int]         = 0                    
  2124. , @NameHash [Binary] (32) = NULL
  2125. , @ObjectGuid [uniqueidentifier] = Null         
  2126. , @CheckDup [bit] = 1
  2127. , @Description [nvarchar](1024) = Null          
  2128. , @Name [ntext]
  2129. , @ApplicationData [ntext] = Null               
  2130.  
  2131. )
  2132.  
  2133. As
  2134. DECLARE @appName nvarchar(512)
  2135. DECLARE @appGuid uniqueidentifier
  2136. Declare @AccessAtObjType [tinyint]
  2137. DECLARE @SaclIsOn [bit]
  2138. Set @SaclIsOn = 0
  2139.  
  2140. Set NoCount On
  2141.  
  2142.     Begin
  2143.     
  2144.     DECLARE @RowCount INT, @Error INT
  2145.     
  2146.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@AppId, 1, 1, @SaclIsOn output
  2147.     
  2148.     -- Require Admin Access at App
  2149.     if @Return <> 1 
  2150.     Begin
  2151.         if (@Return >= 2)
  2152.         Begin
  2153.             Set @Return = -5 
  2154.         End
  2155.         goto Done
  2156.     End
  2157.     
  2158.     
  2159.     IF @CheckDup = 1
  2160.         BEGIN
  2161.             Exec AzMan_SP_Check_Dup_Scope @Return output, @AppID, -1, @NameHash
  2162.         End
  2163.     ELSE
  2164.         Set @Return = 0
  2165.             
  2166.     if @Return = 0 
  2167.     Begin
  2168.  
  2169.         Insert Into [dbo].[AzMan_AzScope]
  2170.         (
  2171.               [AppId]
  2172.             , [Name]
  2173.             , [NameLen]
  2174.             , [NameHash]
  2175.             , [Description]
  2176.             , [ApplicationData]
  2177.             , [ObjectGuid]
  2178.         )
  2179.  
  2180.         Values
  2181.         (
  2182.             @AppId
  2183.             , @Name
  2184.             , @NameLen
  2185.             , @NameHash
  2186.             , @Description
  2187.             , @ApplicationData
  2188.             , @ObjectGuid
  2189.         )
  2190.         
  2191.         SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  2192.         If @RowCount = 1
  2193.         Begin
  2194.             Set @ID = Cast(SCOPE_IDENTITY() As [int])               
  2195.         End
  2196.         Else
  2197.         Begin
  2198.             Set @Return = @Error
  2199.         End
  2200.     End
  2201.     
  2202.     IF @SaclIsOn = 1
  2203.         BEGIN
  2204.             -- get the store info for auditing
  2205.             SELECT @appName = app.Name, @appGuid = app.ObjectGuid FROM [dbo].[AzMan_AzApplication] app
  2206.                 WHERE app.ID = @AppId
  2207.  
  2208.             -- generate an audit
  2209.             EXEC [AzMan_SP_GenerateObjectAudit]
  2210.                 @Return,
  2211.                 0,  -- 0 for SE_AUDITID_AZ_SQL_OBJECT_CREATE
  2212.                 1,  -- 1 for Application
  2213.                 @appName,
  2214.                 @appGuid,
  2215.                 4,  -- 4 for scope
  2216.                 @Name,
  2217.                 @ObjectGuid,
  2218.                 N'' -- no other info
  2219.         END
  2220.     End
  2221. Done:
  2222. Set NoCount Off
  2223.  
  2224. Return(@Return)
  2225.  
  2226.  
  2227. GO
  2228.  
  2229. Create Procedure [AzMan_SPI_AzOperation]
  2230.  
  2231. -- Inserts a new record in [AzMan_AzOperation] table
  2232. (
  2233.   @Return       [int]   output  
  2234. , @ID [int] = Null Output                       
  2235. , @OperationID [int] = Null                     
  2236. , @AppId [int] = Null                       
  2237. , @ObjectGuid [uniqueidentifier] = Null         
  2238. , @CheckDup [bit] = 1
  2239. , @Name [nvarchar](64) = Null                   
  2240. , @Description [nvarchar](1024) = Null          
  2241. , @ApplicationData [ntext] = Null               
  2242.  
  2243. )
  2244.  
  2245. As
  2246. DECLARE @appName nvarchar(512)
  2247. DECLARE @appGuid uniqueidentifier
  2248. DECLARE @SaclIsOn [bit]
  2249. Set @SaclIsOn = 0
  2250.  
  2251. Set NoCount On
  2252.     Begin
  2253.  
  2254.     DECLARE @RowCount INT, @Error INT   
  2255.     Declare @AccessAtObjType [tinyint]
  2256.     Set @Return = 0 
  2257.     
  2258.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output, @AppID, 1, 1, @SaclIsOn output
  2259.     
  2260.     -- Require Admin Access
  2261.     if @Return <> 1 
  2262.     Begin
  2263.         if (@Return >= 2)
  2264.         Begin
  2265.             Set @Return = -5 
  2266.         End
  2267.         goto Done
  2268.     End
  2269.     
  2270.     -- if check dup
  2271.     IF @CheckDup = 1
  2272.         BEGIN
  2273.             Exec AzMan_SP_Check_Dup_Operation @Return output, @AppID, @ID, @Name
  2274.         End
  2275.     ELSE
  2276.         Set @Return = 0
  2277.             
  2278.     if @Return = 0  
  2279.     Begin   
  2280.             
  2281.         Insert Into [dbo].[AzMan_AzOperation]
  2282.         (
  2283.               [ObjectGuid]
  2284.             , [AppId]
  2285.             , [Name]
  2286.             , [Description]
  2287.             , [ApplicationData]
  2288.             , [OperationID]
  2289.         )
  2290.  
  2291.         Values
  2292.         (
  2293.               @ObjectGuid
  2294.             , @AppId
  2295.             , @Name
  2296.             , @Description
  2297.             , @ApplicationData
  2298.             , @OperationID
  2299.         )
  2300.  
  2301.         SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  2302.         If @RowCount = 1
  2303.         Begin
  2304.             Set @ID = Cast(SCOPE_IDENTITY() As [int])
  2305.         End
  2306.         Else
  2307.         Begin
  2308.             Set @Return = @Error
  2309.         End
  2310.         
  2311.     End
  2312.     
  2313.     IF @SaclIsOn = 1
  2314.         BEGIN
  2315.             -- get the store info for auditing
  2316.             SELECT @appName = app.Name, @appGuid = app.ObjectGuid FROM [dbo].[AzMan_AzApplication] app
  2317.                 WHERE app.ID = @AppId
  2318.  
  2319.             -- generate an audit
  2320.             EXEC [AzMan_SP_GenerateObjectAudit]
  2321.                 @Return,
  2322.                 0,  -- 0 for SE_AUDITID_AZ_SQL_OBJECT_CREATE
  2323.                 1,  -- 1 for Application
  2324.                 @appName,
  2325.                 @appGuid,
  2326.                 2,  -- 2 for operation
  2327.                 @Name,
  2328.                 @ObjectGuid,
  2329.                 N'' -- no other info
  2330.         END
  2331.     End
  2332.     
  2333. Done:
  2334. Set NoCount Off
  2335.  
  2336. Return(@Return)
  2337.  
  2338. GO
  2339.  
  2340.  
  2341. Create Procedure [AzMan_SPI_AzApplicationGroup]
  2342.  
  2343. -- Inserts a new record in [AzMan_AzApplicationGroup] table
  2344. (
  2345.   @Return       [int]   output  
  2346. , @ID [int] = Null Output 
  2347. , @ParentId [int] 
  2348. , @ParentType [int]  
  2349. , @GroupType [tinyint] = Null  
  2350. , @ObjectGuid [uniqueidentifier] = Null  
  2351. , @CheckDup [bit] = 1
  2352. , @Name [nvarchar](64) = Null  
  2353. , @Description [nvarchar](1024) = Null
  2354. )
  2355. As
  2356.  
  2357.     DECLARE @RowCount INT, @Error INT
  2358.     Declare @StoreID int, @AppID int , @ScopeID int
  2359.     
  2360.     -- parent name and guid is only needed for auditing
  2361.     DECLARE @parentName nvarchar(512)
  2362.     DECLARE @parentGuid uniqueidentifier
  2363.     
  2364.     Declare @AccessAtObjType [tinyint]
  2365.     DECLARE @SaclIsOn [bit]
  2366.     Set @SaclIsOn = 0
  2367.  
  2368.     Set @Return = 0
  2369.     
  2370.     set @StoreID = 0 
  2371.     set @AppID   = 0
  2372.     set @ScopeID = 0
  2373.  
  2374.     Set NoCount On
  2375.  
  2376.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output, @ParentId, @ParentType, 1, @SaclIsOn output
  2377.     
  2378.     -- Require Admin Access
  2379.     if @Return <> 1 
  2380.     Begin
  2381.         if (@Return >= 2)
  2382.         Begin
  2383.             Set @Return = -5 
  2384.         End
  2385.         goto Done
  2386.     End
  2387.  
  2388.     IF @CheckDup = 1
  2389.         BEGIN
  2390.             Exec AzMan_SP_Check_Dup_Group @Return output, @ParentID, @ParentType, @ID, @Name
  2391.         END
  2392.     ELSE
  2393.         Set @Return = 0
  2394.         
  2395.     if @Return = 0
  2396.     Begin
  2397.  
  2398.         if @ParentType = 0
  2399.         Begin
  2400.             set @StoreID = @ParentID
  2401.             -- get info for auditing            
  2402.             IF @SaclIsOn = 1
  2403.                 BEGIN
  2404.                     SELECT @parentName = store.Name, @parentGuid = store.ObjectGuid FROM [dbo].[AzMan_AzAuthorizationStore] store
  2405.                         WHERE store.ID = @ParentID
  2406.                 END
  2407.         End
  2408.         else if @ParentType = 1
  2409.         Begin
  2410.             set @AppID = @ParentID 
  2411.             -- get info for auditing            
  2412.             IF @SaclIsOn = 1
  2413.                 BEGIN
  2414.                     SELECT @parentName = app.Name, @parentGuid = app.ObjectGuid FROM [dbo].[AzMan_AzApplication] app
  2415.                         WHERE app.ID = @ParentID 
  2416.                 END
  2417.         End         
  2418.         else if @ParentType = 4
  2419.         Begin
  2420.             set @ScopeID = @ParentID 
  2421.             -- get info for auditing            
  2422.             IF @SaclIsOn = 1
  2423.                 BEGIN
  2424.                     SELECT @parentName = scope.Name, @parentGuid = scope.ObjectGuid FROM [dbo].[AzMan_AzScope] scope
  2425.                         WHERE scope.ID = @ParentID
  2426.                 END
  2427.         End         
  2428.  
  2429.         Insert Into [dbo].[AzMan_AzApplicationGroup]
  2430.         (
  2431.             [ObjectGuid]
  2432.             , [StoreId]
  2433.             , [AppId]           
  2434.             , [ScopeId]                     
  2435.             , [ParentType]
  2436.             , [Name]
  2437.             , [Description]
  2438.             , [GroupType]
  2439.         )
  2440.  
  2441.         Values
  2442.         (
  2443.             @ObjectGuid
  2444.             , @StoreId
  2445.             , @AppId            
  2446.             , @ScopeId                      
  2447.             , @ParentType
  2448.             , @Name
  2449.             , @Description
  2450.             , @GroupType
  2451.         )
  2452.         
  2453.         SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  2454.         If @RowCount = 1
  2455.         Begin
  2456.             Set @ID = Cast(SCOPE_IDENTITY() As [int])
  2457.         End
  2458.         Else
  2459.         Begin
  2460.             Set @Return = @Error
  2461.         End
  2462.     End         
  2463.     
  2464.     IF @SaclIsOn = 1
  2465.         BEGIN
  2466.         -- generate an audit
  2467.         EXEC [AzMan_SP_GenerateObjectAudit]
  2468.             @Return,
  2469.             0,  -- 0 for SE_AUDITID_AZ_SQL_OBJECT_CREATE
  2470.             @ParentType,  -- parent type
  2471.             @parentName,
  2472.             @parentGuid,
  2473.             5,  -- 5 for group
  2474.             @Name,
  2475.             @ObjectGuid,
  2476.             N'' -- no other info
  2477.         END
  2478.  
  2479. Done:
  2480.  
  2481. Set NoCount Off
  2482.  
  2483. Return(@Return)
  2484.  
  2485. GO
  2486.  
  2487. Create Procedure [AzMan_SPI_AzTask]
  2488.  
  2489. -- Inserts a new record in [AzMan_AzTask] table
  2490. (
  2491.   @Return       [int]   output  
  2492. , @ID [int] = Null Output 
  2493. , @IsRoleDefinition [bit] = 0 
  2494. , @ParentId [int] 
  2495. , @ParentType [tinyint]  
  2496. , @ObjectGuid [uniqueidentifier] = Null  
  2497. , @CheckDup [bit] = 1
  2498. , @Name [nvarchar](64) = Null  
  2499. , @Description [nvarchar](1024) = Null  
  2500. , @ApplicationData [ntext] = Null   
  2501. )
  2502. As
  2503.  
  2504. DECLARE @RowCount INT, @Error INT
  2505. Declare @AppID [int], @ScopeID [int]
  2506. DECLARE @parentName nvarchar(512)
  2507. DECLARE @parentGuid uniqueidentifier
  2508. Declare @AccessAtObjType [tinyint]
  2509. DECLARE @SaclIsOn [bit]
  2510. Set @SaclIsOn = 0
  2511.     
  2512. Set @Return = 0
  2513.  
  2514. Set NoCount On
  2515.  
  2516.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ParentId, @ParentType, 1, @SaclIsOn output
  2517.     
  2518.     -- Require Admin Access
  2519.     if @Return <> 1 
  2520.     Begin
  2521.         if (@Return >= 2)
  2522.         Begin
  2523.             Set @Return = -5 
  2524.         End
  2525.         goto Done
  2526.     End
  2527.  
  2528.     Set @AppID = null
  2529.     Set @ScopeID = null
  2530.     
  2531.     if @ParentType = 1
  2532.     Begin
  2533.         Set @AppID = @ParentID
  2534.         -- get info for auditing            
  2535.         IF @SaclIsOn = 1
  2536.             BEGIN
  2537.                 SELECT @parentName = app.Name, @parentGuid = app.ObjectGuid FROM [dbo].[AzMan_AzApplication] app
  2538.                     WHERE app.ID = @ParentID 
  2539.             END
  2540.     End
  2541.     Else if @ParentType = 4
  2542.     Begin 
  2543.         Set @ScopeID = @ParentID
  2544.         -- get info for auditing            
  2545.         IF @SaclIsOn = 1
  2546.             BEGIN
  2547.                 SELECT @parentName = scope.Name, @parentGuid = scope.ObjectGuid FROM [dbo].[AzMan_AzScope] scope
  2548.                     WHERE scope.ID = @ParentID
  2549.             END
  2550.     End
  2551.     Else
  2552.     Begin
  2553.         Set @Return = -1
  2554.         goto Done
  2555.     End 
  2556.  
  2557.         -- Make sure that the name doesn't exist at the same level
  2558.         
  2559.         IF @CheckDup = 1
  2560.             BEGIN
  2561.                 Exec AzMan_SP_Check_Dup_Task @Return output, @ParentID, @ParentType, @ID, @Name
  2562.             End
  2563.         ELSE
  2564.             Set @Return = 0
  2565.             
  2566.         if @Return = 0  
  2567.         Begin
  2568.             Insert Into [dbo].[AzMan_AzTask]
  2569.             (
  2570.                   [ObjectGuid]
  2571.                 , [AppId]
  2572.                 , [ScopeId]
  2573.                 , [ParentType]
  2574.                 , [Name]
  2575.                 , [Description]
  2576.                 , [ApplicationData]
  2577.                 , [IsRoleDefinition]
  2578.             )
  2579.  
  2580.             Values
  2581.             (
  2582.                   @ObjectGuid
  2583.                 , @AppId
  2584.                 , @ScopeId
  2585.                 , @ParentType
  2586.                 , @Name
  2587.                 , @Description
  2588.                 , @ApplicationData
  2589.                 , @IsRoleDefinition
  2590.             )
  2591.             
  2592.             SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  2593.             If @RowCount = 1
  2594.             Begin
  2595.                 Set @ID = Cast(SCOPE_IDENTITY() As [int])
  2596.             End
  2597.             Else
  2598.             Begin
  2599.                 Set @Return = @Error
  2600.             End
  2601.         End
  2602.         
  2603.     IF @SaclIsOn = 1
  2604.         -- generate an audit
  2605.         EXEC [AzMan_SP_GenerateObjectAudit]
  2606.             @Return,
  2607.             0,  -- 0 for SE_AUDITID_AZ_SQL_OBJECT_CREATE
  2608.             @ParentType,  -- parent type
  2609.             @parentName,
  2610.             @parentGuid,
  2611.             3,  -- 3 for task
  2612.             @Name,
  2613.             @ObjectGuid,
  2614.             N'' -- no other info
  2615.  
  2616. Done:  
  2617. Set NoCount Off
  2618.  
  2619. Return(@Return)
  2620.  
  2621. GO
  2622.  
  2623.  
  2624. Create Procedure [AzMan_SPI_AzTask_Single_Operation]
  2625. (
  2626.   @Return [int] output
  2627. , @TaskID       [int]               -- ID Of task
  2628. , @OperationID  [int]
  2629. , @SaclIsOn     [bit]
  2630. )
  2631. As
  2632.  
  2633. DECLARE @RowCount INT, @Error INT
  2634. DECLARE @taskName nvarchar(512)
  2635. DECLARE @taskGuid uniqueidentifier
  2636. DECLARE @opName nvarchar(512)
  2637. DECLARE @opGuid uniqueidentifier
  2638.  
  2639. Set @Return = 0
  2640.  
  2641. Set NoCount On
  2642.  
  2643.     INSERT INTO [AzMan_Task_To_Operation_Link] 
  2644.         (TaskID, OperationID) 
  2645.     VALUES 
  2646.         (@TaskID, @OperationID) 
  2647.         
  2648.     SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  2649.     If @RowCount <> 1
  2650.     Begin
  2651.         if @Error <> 0 
  2652.         Begin   
  2653.             Set @Return = @Error
  2654.         End
  2655.         else
  2656.         Begin
  2657.             Set @Return = -1 --Generic Error
  2658.         End
  2659.     End
  2660.     
  2661.     IF @SaclIsOn = 1
  2662.         BEGIN
  2663.             -- get the info for auditing
  2664.             SELECT @taskName = Task.Name, @taskGuid = Task.ObjectGuid FROM [dbo].[AzMan_AzTask] Task
  2665.                 WHERE Task.ID = @TaskID
  2666.             SELECT @opName = Op.Name, @opGuid = Op.ObjectGuid FROM [dbo].[AzMan_AzOperation] Op
  2667.                 WHERE Op.ID = @OperationID
  2668.                         
  2669.             -- generate an audit
  2670.             EXEC [AzMan_SP_GenerateObjectAudit]
  2671.                     @Return,
  2672.                     2,  -- 2 for SE_AUDITID_AZ_SQL_REFERENCE_ASSIGN
  2673.                     3,  -- 3 for task
  2674.                     @taskName,
  2675.                     @taskGuid,
  2676.                     2,  -- 2 for Operation
  2677.                     @opName,
  2678.                     @opGuid,
  2679.                     N'' -- no other info
  2680.         END
  2681. Set NoCount Off
  2682.  
  2683. Return(@Return)
  2684.  
  2685. GO
  2686.  
  2687. Create Procedure [AzMan_SPD_AzTask_Single_Operation]
  2688. (
  2689.   @Return [int] output
  2690. , @TaskID       [int]               -- ID Of task
  2691. , @OperationID  [int]
  2692. , @SaclIsOn     [bit]
  2693. )
  2694. As
  2695.  
  2696. Set @Return = 0
  2697.  
  2698. DECLARE @RowCount INT, @Error INT
  2699. DECLARE @taskName nvarchar(512)
  2700. DECLARE @taskGuid uniqueidentifier
  2701. DECLARE @opName nvarchar(512)
  2702. DECLARE @opGuid uniqueidentifier
  2703.  
  2704. Set NoCount On
  2705.  
  2706.     delete [AzMan_Task_To_Operation_Link] 
  2707.     where 
  2708.         TaskID = @TaskID and OperationID =  @OperationID 
  2709.         
  2710.     SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  2711.     If @RowCount <> 1
  2712.     Begin
  2713.         if @Error <> 0 
  2714.         Begin   
  2715.             Set @Return = @Error
  2716.         End
  2717.         else
  2718.         Begin
  2719.             Set @Return = -1168 --Record not found
  2720.         End
  2721.     End
  2722.  
  2723.     IF @SaclIsOn = 1
  2724.         BEGIN
  2725.             -- get the info for auditing
  2726.             SELECT @taskName = Task.Name, @taskGuid = Task.ObjectGuid FROM [dbo].[AzMan_AzTask] Task
  2727.                 WHERE Task.ID = @TaskID
  2728.             SELECT @opName = Op.Name, @opGuid = Op.ObjectGuid FROM [dbo].[AzMan_AzOperation] Op
  2729.                 WHERE Op.ID = @OperationID
  2730.                         
  2731.             -- generate an audit
  2732.  
  2733.             EXEC [AzMan_SP_GenerateObjectAudit]
  2734.                     @Return,
  2735.                     3,  -- 3 for SE_AUDITID_AZ_SQL_REFERENCE_REMOVE
  2736.                     3,  -- 3 for task
  2737.                     @taskName,
  2738.                     @taskGuid,
  2739.                     2,  -- 2 for Operation
  2740.                     @opName,
  2741.                     @opGuid,
  2742.                     N'' -- no other info
  2743.         END
  2744. Set NoCount Off
  2745.  
  2746. Return(@Return)
  2747.  
  2748. GO
  2749.  
  2750. Create Procedure [AzMan_SPI_AzTask_Multi_Operations]
  2751. (
  2752.   @Return [int] output
  2753. , @TaskID [int]             -- ID Of Task
  2754. , @SepChar [char] (1) = "|"
  2755. , @OperationIDs [nvarchar] (4000)
  2756. )
  2757. As
  2758.  
  2759. Set @Return = 0
  2760. DECLARE @equal char
  2761. DECLARE @addOrDelete nvarchar(10)
  2762. DECLARE @isAdd int
  2763. Declare @AccessAtObjType [tinyint]
  2764. DECLARE @SaclIsOn [bit]
  2765. Set @SaclIsOn = 0
  2766.  
  2767. SET @equal = '='
  2768.  
  2769. Set NoCount On
  2770.  
  2771.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@TaskID, 3, 1, @SaclIsOn output
  2772.     
  2773.     -- Require Admin Access
  2774.     if @Return <> 1 
  2775.     Begin
  2776.         if (@Return >= 2)
  2777.         Begin
  2778.             Set @Return = -5 
  2779.         End
  2780.         goto Done
  2781.     End
  2782.  
  2783. -- First parse the string
  2784. -- Insert each one of them 
  2785.  
  2786. DECLARE @OperationID varchar(100), @Pos int
  2787. Declare @iOperationID int
  2788.  
  2789.     SET @OperationIDs = LTRIM(RTRIM(@OperationIDs))+ @SepChar
  2790.     
  2791.     SET @Pos = CHARINDEX(@equal, @OperationIDs, 1)
  2792.  
  2793.     IF REPLACE(@OperationIDs, @SepChar, '') <> ''
  2794.     BEGIN
  2795.         WHILE @Pos > 0
  2796.         BEGIN
  2797.             SET @OperationID = LTRIM(RTRIM(LEFT(@OperationIDs, @Pos - 1)))
  2798.             Set @iOperationID = CAST(@OperationID as int)
  2799.             
  2800.             -- remove the left part (the id)
  2801.             SET @OperationIDs = RIGHT(@OperationIDs, LEN(@OperationIDs) - @Pos)
  2802.             
  2803.             -- now move to the pipe separator
  2804.             SET @Pos = CHARINDEX(@SepChar, @OperationIDs, 1)
  2805.             SET @addOrDelete = LTRIM(RTRIM(LEFT(@OperationIDs, @Pos - 1)))
  2806.             
  2807.             Set @isAdd = CAST(@addOrDelete as int)
  2808.             
  2809.             IF @iOperationID <> 0
  2810.             BEGIN
  2811.                 -- if NNNN=0, then it means to delete
  2812.                 IF @isAdd <> 0
  2813.                 BEGIN
  2814.                     Exec AzMan_SPI_AzTask_Single_Operation @Return output, @TaskID, @iOperationID, @SaclIsOn
  2815.                     if @Return <> 0 
  2816.                     Begin
  2817.                         Break   
  2818.                     End
  2819.                 End
  2820.                 ELSE
  2821.                 BEGIN
  2822.                     Exec AzMan_SPD_AzTask_Single_Operation @Return output, @TaskID, @iOperationID, @SaclIsOn
  2823.                     if @Return <> 0 
  2824.                     Begin
  2825.                         Break   
  2826.                     End
  2827.                 End
  2828.             END
  2829.             SET @OperationIDs = RIGHT(@OperationIDs, LEN(@OperationIDs) - @Pos)
  2830.             SET @Pos = CHARINDEX(@equal, @OperationIDs, 1)
  2831.         END
  2832.     END 
  2833.  
  2834. Done:
  2835. Set NoCount Off
  2836.  
  2837. Return(@Return)
  2838.  
  2839. GO
  2840.  
  2841. Create Procedure [AzMan_SPI_AzRoleAssignment_Single_Operation]
  2842. (
  2843.   @Return [int] output
  2844. , @RoleID       [int]               -- ID Of Role
  2845. , @OperationID  [int]
  2846. , @SaclIsOn     [bit]
  2847. )
  2848. As
  2849.  
  2850. DECLARE @RowCount INT, @Error INT
  2851. DECLARE @roleName nvarchar(512)
  2852. DECLARE @roleGuid uniqueidentifier
  2853.  
  2854. DECLARE @opName nvarchar(512)
  2855. DECLARE @opGuid uniqueidentifier
  2856.  
  2857. Set @Return = 0
  2858.  
  2859. Set NoCount On
  2860.  
  2861.     INSERT INTO [AzMan_Role_To_Operation_Link] 
  2862.         (RoleID, OperationID) 
  2863.     VALUES 
  2864.         (@RoleID, @OperationID) 
  2865.         
  2866.     SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  2867.     If @RowCount <> 1
  2868.     Begin
  2869.         if @Error <> 0 
  2870.         Begin   
  2871.             Set @Return = @Error
  2872.         End
  2873.         else
  2874.         Begin
  2875.             Set @Return = -1 --Generic Error
  2876.         End 
  2877.     End
  2878.     
  2879.     IF @SaclIsOn = 1
  2880.         BEGIN
  2881.             -- get the info for auditing
  2882.             SELECT @roleName = Role.Name, @roleGuid = Role.ObjectGuid FROM [dbo].[AzMan_AzRoleAssignment] Role
  2883.                 WHERE Role.ID = @RoleID
  2884.             SELECT @opName = Op.Name, @opGuid = Op.ObjectGuid FROM [dbo].[AzMan_AzOperation] Op
  2885.                 WHERE Op.ID = @OperationID
  2886.                         
  2887.             -- generate an audit
  2888.             EXEC [AzMan_SP_GenerateObjectAudit]
  2889.                     @Return,
  2890.                     2,  -- 2 for SE_AUDITID_AZ_SQL_REFERENCE_ASSIGN
  2891.                     6,  -- 6 for role
  2892.                     @roleName,
  2893.                     @roleGuid,
  2894.                     2,  -- 2 for Operation
  2895.                     @opName,
  2896.                     @opGuid,
  2897.                     N'' -- no other info
  2898.         END
  2899.  
  2900. Set NoCount Off
  2901.  
  2902. Return(@Return)
  2903.  
  2904. GO
  2905.  
  2906. Create Procedure [AzMan_SPD_AzRoleAssignment_Single_Operation]
  2907. (
  2908.   @Return [int] output
  2909. , @RoleID       [int]               -- ID Of Role assignment
  2910. , @OperationID  [int]
  2911. , @SaclIsOn     [bit]
  2912. )
  2913. As
  2914.  
  2915. DECLARE @RowCount INT, @Error INT
  2916. DECLARE @roleName nvarchar(512)
  2917. DECLARE @roleGuid uniqueidentifier
  2918.  
  2919. DECLARE @opName nvarchar(512)
  2920. DECLARE @opGuid uniqueidentifier
  2921.  
  2922. Set @Return = 0
  2923.  
  2924. Set NoCount On
  2925.  
  2926.     delete [AzMan_Role_To_Operation_Link] 
  2927.     where 
  2928.         RoleID = @RoleID and OperationID =  @OperationID 
  2929.         
  2930.     SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  2931.     If @RowCount <> 1
  2932.     Begin
  2933.         if @Error <> 0 
  2934.         Begin   
  2935.             Set @Return = @Error
  2936.         End
  2937.         else
  2938.         Begin
  2939.             Set @Return = -1168 --Record not found
  2940.         End
  2941.     End
  2942.  
  2943.     IF @SaclIsOn = 1
  2944.         BEGIN
  2945.             -- get the info for auditing
  2946.             SELECT @roleName = Role.Name, @roleGuid = Role.ObjectGuid FROM [dbo].[AzMan_AzRoleAssignment] Role
  2947.                     WHERE Role.ID = @RoleID
  2948.             SELECT @opName = Op.Name, @opGuid = Op.ObjectGuid FROM [dbo].[AzMan_AzOperation] Op
  2949.                     WHERE Op.ID = @OperationID
  2950.             -- generate an audit
  2951.             EXEC [AzMan_SP_GenerateObjectAudit]
  2952.                     @Return,
  2953.                     3,  -- 3 for SE_AUDITID_AZ_SQL_REFERENCE_REMOVE
  2954.                     6,  -- 6 for role
  2955.                     @roleName,
  2956.                     @roleGuid,
  2957.                     2,  -- 1 for Operation
  2958.                     @opName,
  2959.                     @opGuid,
  2960.                     N'' -- no other info
  2961.         END
  2962.         
  2963. Set NoCount Off
  2964.  
  2965. Return(@Return)
  2966.  
  2967. GO
  2968.  
  2969.  
  2970. Create Procedure [AzMan_SPI_AzRoleAssignment_Multi_Operations]
  2971. (
  2972.   @Return [int] output  
  2973. , @RoleID [int]             -- ID Of Role
  2974. , @SepChar [nchar] (1) = "|"
  2975. , @OperationIDs [nvarchar] (4000)
  2976. )
  2977. As
  2978.  
  2979. Declare @AccessAtObjType [tinyint]
  2980. DECLARE @SaclIsOn [bit]
  2981. Set @SaclIsOn = 0
  2982. Set @Return = 0
  2983.  
  2984. Set NoCount On
  2985.  
  2986. -- First parse the string
  2987. -- Insert each one of them 
  2988.  
  2989.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@RoleID, 6, 1, @SaclIsOn output
  2990.     
  2991.     -- Require Admin Access
  2992.     if @Return <> 1 
  2993.     Begin
  2994.         if (@Return >= 2)
  2995.         Begin
  2996.             Set @Return = -5 
  2997.         End
  2998.         goto Done
  2999.     End
  3000.  
  3001. DECLARE @OperationID nvarchar(100), @Pos int
  3002. Declare @iOperationID int
  3003. DECLARE @equal char
  3004. DECLARE @addOrDelete nvarchar(10)
  3005. DECLARE @isAdd int
  3006. SET @equal = '='
  3007.  
  3008.     SET @OperationIDs = LTRIM(RTRIM(@OperationIDs))+ @SepChar
  3009.     
  3010.     SET @Pos = CHARINDEX(@equal, @OperationIDs, 1)
  3011.  
  3012.     IF REPLACE(@OperationIDs, @SepChar, '') <> ''
  3013.     BEGIN
  3014.         WHILE @Pos > 0
  3015.         BEGIN
  3016.             SET @OperationID = LTRIM(RTRIM(LEFT(@OperationIDs, @Pos - 1)))
  3017.             Set @iOperationID = CAST(@OperationID as int)
  3018.             
  3019.             -- remove the left part (the id)
  3020.             SET @OperationIDs = RIGHT(@OperationIDs, LEN(@OperationIDs) - @Pos)
  3021.             
  3022.             -- now move to the pipe separator
  3023.             SET @Pos = CHARINDEX(@SepChar, @OperationIDs, 1)
  3024.             SET @addOrDelete = LTRIM(RTRIM(LEFT(@OperationIDs, @Pos - 1)))
  3025.             
  3026.             Set @isAdd = CAST(@addOrDelete as int)
  3027.             
  3028.             IF @iOperationID <> 0
  3029.             BEGIN
  3030.                 -- if NNNN=0, then it means to delete
  3031.                 IF @isAdd <> 0
  3032.                 BEGIN
  3033.                     Exec AzMan_SPI_AzRoleAssignment_Single_Operation @Return output, @RoleID, @iOperationID, @SaclIsOn
  3034.                     if @Return <> 0
  3035.                     Begin
  3036.                         Break
  3037.                     End
  3038.                 End
  3039.                 ELSE
  3040.                 BEGIN
  3041.                     Exec AzMan_SPD_AzRoleAssignment_Single_Operation @Return output, @RoleID, @iOperationID, @SaclIsOn
  3042.                     if @Return <> 0
  3043.                     Begin
  3044.                         Break
  3045.                     End
  3046.                 END
  3047.             END
  3048.             
  3049.             SET @OperationIDs = RIGHT(@OperationIDs, LEN(@OperationIDs) - @Pos)
  3050.             SET @Pos = CHARINDEX(@equal, @OperationIDs, 1)
  3051.         END
  3052.     END 
  3053.     
  3054. Done:
  3055. Set NoCount Off
  3056.  
  3057. Return(@Return)
  3058.  
  3059. GO
  3060.  
  3061. Create Procedure [AzMan_SPI_AzTask_Single_Task]
  3062. (
  3063.   @Return [int] output
  3064. , @TaskID       [int]               
  3065. , @ChildID      [int]
  3066. , @SaclIsOn     [bit]
  3067. )
  3068. As
  3069.  
  3070. DECLARE @RowCount INT, @Error INT
  3071. DECLARE @taskName nvarchar(512)
  3072. DECLARE @taskGuid uniqueidentifier
  3073. DECLARE @refTaskName nvarchar(512)
  3074. DECLARE @refTaskGuid uniqueidentifier
  3075.  
  3076. Set @Return = 0
  3077.  
  3078. Set NoCount On
  3079.  
  3080.     INSERT INTO [AzMan_Task_To_Task_Link] 
  3081.         (TaskID, ChildID) 
  3082.     VALUES 
  3083.         (@TaskID, @ChildID) 
  3084.         
  3085.     SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  3086.     If @RowCount <> 1
  3087.     Begin
  3088.         if @Error <> 0 
  3089.         Begin   
  3090.             Set @Return = @Error
  3091.         End
  3092.         else
  3093.         Begin
  3094.             Set @Return = -1 --Generic Error
  3095.         End 
  3096.     End
  3097.     
  3098.     -- get the info for auditing
  3099.     IF @SaclIsOn = 1
  3100.         BEGIN
  3101.             SELECT @taskName = Task.Name, @taskGuid = Task.ObjectGuid FROM [dbo].[AzMan_AzTask] Task
  3102.                 WHERE Task.ID = @TaskID
  3103.             SELECT @refTaskName = refTask.Name, @refTaskGuid = refTask.ObjectGuid FROM [dbo].[AzMan_AzTask] refTask
  3104.                 WHERE refTask.ID = @ChildID
  3105.                         
  3106.             -- generate an audit
  3107.             EXEC [AzMan_SP_GenerateObjectAudit]
  3108.                     @Return,
  3109.                     2,  -- 2 for SE_AUDITID_AZ_SQL_REFERENCE_ASSIGN
  3110.                     3,  -- 3 for task
  3111.                     @taskName,
  3112.                     @taskGuid,
  3113.                     3,  -- 3 for task
  3114.                     @refTaskName,
  3115.                     @refTaskGuid,
  3116.                     N'' -- no other info
  3117.         END
  3118.         
  3119. Set NoCount Off
  3120.  
  3121. Return(@Return)
  3122.  
  3123. GO
  3124.  
  3125. Create Procedure [AzMan_SPD_AzTask_Single_Task]
  3126. (
  3127.   @Return [int] output,
  3128.   @TaskID       [int]               
  3129. , @ChildID      [int]
  3130. , @SaclIsOn     [bit]
  3131. )
  3132. As
  3133.  
  3134. DECLARE @RowCount INT, @Error INT
  3135. DECLARE @taskName nvarchar(512)
  3136. DECLARE @taskGuid uniqueidentifier
  3137. DECLARE @refTaskName nvarchar(512)
  3138. DECLARE @refTaskGuid uniqueidentifier
  3139.  
  3140. Set @Return = 0
  3141.  
  3142. Set NoCount On
  3143.  
  3144.     Delete From [AzMan_Task_To_Task_Link] 
  3145.     where TaskID = @TaskID and
  3146.           ChildID  = @ChildID 
  3147.  
  3148.     SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  3149.     If @RowCount <> 1
  3150.     Begin
  3151.         Set @Return = @Error
  3152.     End
  3153.  
  3154.     -- get the info for auditing
  3155.     IF @SaclIsOn = 1
  3156.         BEGIN
  3157.             SELECT @taskName = Task.Name, @taskGuid = Task.ObjectGuid FROM [dbo].[AzMan_AzTask] Task
  3158.                 WHERE Task.ID = @TaskID
  3159.             SELECT @refTaskName = refTask.Name, @refTaskGuid = refTask.ObjectGuid FROM [dbo].[AzMan_AzTask] refTask
  3160.                 WHERE refTask.ID = @ChildID
  3161.                         
  3162.             -- generate an audit
  3163.             EXEC [AzMan_SP_GenerateObjectAudit]
  3164.                     @Return,
  3165.                     3,  -- 3 for SE_AUDITID_AZ_SQL_REFERENCE_REMOVE
  3166.                     3,  -- 3 for task
  3167.                     @taskName,
  3168.                     @taskGuid,
  3169.                     3,  -- 3 for task
  3170.                     @refTaskName,
  3171.                     @refTaskGuid,
  3172.                     N'' -- no other info
  3173.         END
  3174. Set NoCount Off
  3175.  
  3176. Return(@Return)
  3177.  
  3178. GO
  3179.  
  3180.  
  3181. Create Procedure [AzMan_SPI_AzTask_Multi_Tasks]
  3182. (
  3183.   @Return [int] output
  3184. , @ParentTaskId [int]               -- ID Of Task
  3185. , @SepChar [char] (1) = "|"
  3186. , @TaskIDs [nvarchar] (4000)
  3187.  
  3188. )
  3189. As
  3190.  
  3191. Declare @AccessAtObjType [tinyint]
  3192. DECLARE @SaclIsOn [bit]
  3193. Set @SaclIsOn = 0
  3194.  
  3195. Set @Return = 0
  3196.  
  3197.  
  3198. Set NoCount On
  3199.  
  3200.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ParentTaskId, 3, 1, @SaclIsOn output
  3201.     
  3202.     -- Require Admin Access
  3203.     if @Return <> 1 
  3204.     Begin
  3205.         if (@Return >= 2)
  3206.         Begin
  3207.             Set @Return = -5 
  3208.         End
  3209.         goto Done
  3210.     End
  3211.  
  3212.  
  3213. -- First parse the string
  3214. -- Insert each one of them 
  3215.  
  3216. DECLARE @TaskID varchar(100), @Pos int
  3217. Declare @iTaskID int
  3218. DECLARE @equal char
  3219. DECLARE @addOrDelete nvarchar(10)
  3220. DECLARE @isAdd int
  3221. SET @equal = '='
  3222.  
  3223.     SET @TaskIDs = LTRIM(RTRIM(@TaskIDs))+ @SepChar
  3224.     
  3225.     SET @Pos = CHARINDEX(@equal, @TaskIDs, 1)
  3226.  
  3227.     --IF REPLACE(@TaskIDs, @SepChar, '') <> ''
  3228.     BEGIN
  3229.         WHILE @Pos > 0
  3230.         BEGIN
  3231.             SET @TaskID = LTRIM(RTRIM(LEFT(@TaskIDs, @Pos - 1)))
  3232.             Set @iTaskID = CAST(@TaskID as int)
  3233.             
  3234.             -- remove the left part (the id)
  3235.             SET @TaskIDs = RIGHT(@TaskIDs, LEN(@TaskIDs) - @Pos)
  3236.             
  3237.             -- now move to the pipe separator
  3238.             SET @Pos = CHARINDEX(@SepChar, @TaskIDs, 1)
  3239.             SET @addOrDelete = LTRIM(RTRIM(LEFT(@TaskIDs, @Pos - 1)))
  3240.             
  3241.             Set @isAdd = CAST(@addOrDelete as int)
  3242.             
  3243.             
  3244.             IF @iTaskID <> 0
  3245.             BEGIN
  3246.                 if @IsAdd <> 0 
  3247.                 Begin
  3248.                     Exec AzMan_SPI_AzTask_Single_Task @Return output, @ParentTaskID, @iTaskID, @SaclIsOn
  3249.                     if @Return <> 0
  3250.                     Begin
  3251.                         Break
  3252.                     End
  3253.                 End                 
  3254.                 else
  3255.                 Begin
  3256.                     Exec AzMan_SPD_AzTask_Single_Task @Return output, @ParentTaskID, @iTaskID, @SaclIsOn
  3257.                     if @Return <> 0
  3258.                     Begin
  3259.                         Break
  3260.                     End
  3261.                 End
  3262.                 
  3263.             END
  3264.             SET @TaskIDs = RIGHT(@TaskIDs, LEN(@TaskIDs) - @Pos)
  3265.             SET @Pos = CHARINDEX(@equal, @TaskIDs, 1)
  3266.         END
  3267.     END 
  3268.  
  3269. Done:
  3270. Set NoCount Off
  3271.  
  3272. Return(@Return)
  3273.  
  3274. GO
  3275.  
  3276. Create Procedure [AzMan_SPI_AzRoleAssignment_Single_Task]
  3277. (
  3278.   @Return [int] output,
  3279.   @RoleID       [int]               -- ID Of Role
  3280. , @TaskID       [int]
  3281. , @SaclIsOn     [bit]
  3282. )
  3283. As
  3284.  
  3285. DECLARE @RowCount INT, @Error INT
  3286. DECLARE @roleName nvarchar(512)
  3287. DECLARE @roleGuid uniqueidentifier
  3288. DECLARE @refTaskName nvarchar(512)
  3289. DECLARE @refTaskGuid uniqueidentifier
  3290.  
  3291. Set @Return = 0
  3292.  
  3293.  
  3294. Set NoCount On
  3295.  
  3296.     INSERT INTO [AzMan_Role_To_Task_Link] 
  3297.         (RoleID, TaskID) 
  3298.     VALUES 
  3299.         (@RoleID, @TaskID) 
  3300.         
  3301.     SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  3302.     If @RowCount <> 1
  3303.     Begin
  3304.         if @Error <> 0 
  3305.         Begin   
  3306.             Set @Return = @Error
  3307.         End
  3308.         else
  3309.         Begin
  3310.             Set @Return = -1 --Generic Error
  3311.         End 
  3312.     End
  3313.         
  3314.     IF @SaclIsOn = 1
  3315.         BEGIN
  3316.             -- get the info for auditing
  3317.             SELECT @roleName = role.Name, @roleGuid = role.ObjectGuid FROM [dbo].[AzMan_AzRoleAssignment] role
  3318.                 WHERE role.ID = @RoleID
  3319.             SELECT @refTaskName = refTask.Name, @refTaskGuid = refTask.ObjectGuid FROM [dbo].[AzMan_AzTask] refTask
  3320.                 WHERE refTask.ID = @TaskID
  3321.                         
  3322.             -- generate an audit
  3323.             EXEC [AzMan_SP_GenerateObjectAudit]
  3324.                     @Return,
  3325.                     2,  -- 2 for SE_AUDITID_AZ_SQL_REFERENCE_ASSIGN
  3326.                     6,  -- 6 for role
  3327.                     @roleName,
  3328.                     @roleGuid,
  3329.                     3,  -- 3 for task
  3330.                     @refTaskName,
  3331.                     @refTaskGuid,
  3332.                     N'' -- no other info
  3333.         END
  3334. Set NoCount Off
  3335.  
  3336. Return(@Return)
  3337.  
  3338. GO
  3339.  
  3340. Create Procedure AzMan_SPD_AzRoleAssignment_Single_Task
  3341. (
  3342.   @Return [int] output,
  3343.   @RoleId [int]             -- ID Of Role Assignment
  3344. , @TaskID [int]
  3345. , @SaclIsOn     [bit]
  3346. )
  3347. As
  3348.  
  3349. DECLARE @RowCount INT, @Error INT
  3350. DECLARE @roleName nvarchar(512)
  3351. DECLARE @roleGuid uniqueidentifier
  3352. DECLARE @refTaskName nvarchar(512)
  3353. DECLARE @refTaskGuid uniqueidentifier
  3354.  
  3355. Set @Return = 0
  3356.  
  3357. Set NoCount On
  3358.  
  3359.     Delete From [AzMan_Role_To_Task_Link] 
  3360.     where TaskID    = @TaskID and
  3361.           RoleID    = @RoleID
  3362.           
  3363.     SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  3364.     If @RowCount <> 1
  3365.     Begin
  3366.         if @Error <> 0 
  3367.         Begin   
  3368.             Set @Return = @Error
  3369.         End
  3370.         else
  3371.         Begin
  3372.             Set @Return = -1168 --Record not found
  3373.         End 
  3374.     End
  3375.     
  3376.     -- get the info for auditing
  3377.     SELECT @roleName = role.Name, @roleGuid = role.ObjectGuid FROM [dbo].[AzMan_AzRoleAssignment] role
  3378.         WHERE role.ID = @RoleID
  3379.     SELECT @refTaskName = refTask.Name, @refTaskGuid = refTask.ObjectGuid FROM [dbo].[AzMan_AzTask] refTask
  3380.         WHERE refTask.ID = @TaskID
  3381.     
  3382.     IF @SaclIsOn = 1
  3383.         BEGIN
  3384.             -- generate an audit
  3385.             EXEC [AzMan_SP_GenerateObjectAudit]
  3386.                     @Return,
  3387.                     3,  -- 3 for SE_AUDITID_AZ_SQL_REFERENCE_REMOVE
  3388.                     6,  -- 6 for role
  3389.                     @roleName,
  3390.                     @roleGuid,
  3391.                     3,  -- 3 for task
  3392.                     @refTaskName,
  3393.                     @refTaskGuid,
  3394.                     N'' -- no other info  
  3395.         END
  3396. Set NoCount Off
  3397.  
  3398. Return(@Return)
  3399.  
  3400. go
  3401.  
  3402.  
  3403. Create Procedure [AzMan_SPI_AzRoleAssignment_Multi_Tasks]
  3404. (
  3405.   @Return [int] output
  3406. , @RoleId [int]             
  3407. , @SepChar [char] (1) = "|"
  3408. , @TaskIDs [nvarchar] (4000)
  3409. )
  3410. As
  3411.  
  3412. Set NoCount On
  3413.  
  3414. Declare @AccessAtObjType [tinyint]
  3415. DECLARE @SaclIsOn [bit]
  3416. Set @SaclIsOn = 0
  3417.  
  3418. Set @Return = 0
  3419.  
  3420.  
  3421.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@RoleId, 6, 1, @SaclIsOn output
  3422.     
  3423.     -- Require Admin Access
  3424.     if @Return <> 1 
  3425.     Begin
  3426.         if (@Return >= 2)
  3427.         Begin
  3428.             Set @Return = -5 
  3429.         End
  3430.         goto Done
  3431.     End
  3432.  
  3433.  
  3434. -- First parse the string
  3435. -- Insert each one of them 
  3436.  
  3437. DECLARE @TaskID varchar(100), @Pos int
  3438. Declare @iTaskID int
  3439. DECLARE @equal char
  3440. DECLARE @addOrDelete nvarchar(10)
  3441. DECLARE @isAdd int
  3442. SET @equal = '='
  3443.  
  3444.  
  3445.     SET @TaskIDs = LTRIM(RTRIM(@TaskIDs))+ @SepChar
  3446.     
  3447.     SET @Pos = CHARINDEX(@equal, @TaskIDs, 1)
  3448.  
  3449.     IF REPLACE(@TaskIDs, @SepChar, '') <> ''
  3450.     BEGIN
  3451.         WHILE @Pos > 0
  3452.         BEGIN
  3453.             SET @TaskID = LTRIM(RTRIM(LEFT(@TaskIDs, @Pos - 1)))
  3454.             Set @iTaskID = CAST(@TaskID as int)
  3455.             
  3456.  
  3457.             -- remove the left part (the id)
  3458.             SET @TaskIDs = RIGHT(@TaskIDs, LEN(@TaskIDs) - @Pos)
  3459.             
  3460.             -- now move to the pipe separator
  3461.             SET @Pos = CHARINDEX(@SepChar, @TaskIDs, 1)
  3462.             SET @addOrDelete = LTRIM(RTRIM(LEFT(@TaskIDs, @Pos - 1)))
  3463.             
  3464.             Set @isAdd = CAST(@addOrDelete as int)
  3465.             
  3466.             
  3467.             IF @iTaskID <> 0
  3468.             BEGIN
  3469.                 -- if NNNN=0, then it means to delete
  3470.                 IF @isAdd <> 0
  3471.                 Begin           
  3472.                     Exec [AzMan_SPI_AzRoleAssignment_Single_Task] @Return output, @RoleID, @iTaskID, @SaclIsOn
  3473.                     if @Return <> 0
  3474.                     Begin
  3475.                         Break
  3476.                     End
  3477.                 End
  3478.                 else
  3479.                 Begin
  3480.                     Exec [AzMan_SPD_AzRoleAssignment_Single_Task] @Return output, @RoleID, @iTaskID, @SaclIsOn
  3481.                     if @Return <> 0
  3482.                     Begin
  3483.                         Break
  3484.                     End
  3485.                 End                 
  3486.             END
  3487.             SET @TaskIDs = RIGHT(@TaskIDs, LEN(@TaskIDs) - @Pos)
  3488.             SET @Pos = CHARINDEX(@equal, @TaskIDs, 1)
  3489.         END
  3490.     END 
  3491.  
  3492. Done:
  3493. Set NoCount Off
  3494.  
  3495. Return(@Return)
  3496.  
  3497. GO
  3498.  
  3499. Create Procedure [AzMan_SPI_AzRoleAssignment]
  3500.  
  3501. (
  3502.   @Return [int] output
  3503. , @ID [int] = Null Output 
  3504. , @ParentId [int] 
  3505. , @ParentType [tinyint]  
  3506. , @ObjectGuid [uniqueidentifier] = Null  
  3507. , @CheckDup [bit] = 1
  3508. , @Name [nvarchar](64) = Null  
  3509. , @Description [nvarchar](1024) = Null  
  3510. , @ApplicationData [ntext] = Null   
  3511. )
  3512. As
  3513.  
  3514. DECLARE @RowCount INT, @Error INT
  3515. Declare @AppId [int] , @ScopeID [int]
  3516. DECLARE @parentName nvarchar(512)
  3517. DECLARE @parentGuid uniqueidentifier
  3518. Declare @AccessAtObjType [tinyint]
  3519. DECLARE @SaclIsOn [bit]
  3520. Set @SaclIsOn = 0
  3521.  
  3522. Set @Return = 0
  3523.  
  3524. Set NoCount On
  3525.  
  3526.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ParentId, @ParentType, 1, @SaclIsOn output
  3527.     
  3528.     -- Require Admin Access
  3529.     if @Return <> 1 
  3530.     Begin
  3531.         if (@Return >= 2)
  3532.         Begin
  3533.             Set @Return = -5 
  3534.         End
  3535.         goto Done
  3536.     End
  3537.  
  3538.         IF @CheckDup = 1
  3539.             BEGIN
  3540.                 Exec AzMan_SP_Check_Dup_RoleAssignment @Return output, @ParentID, @ParentType, @ID, @Name
  3541.             END
  3542.         ELSE
  3543.             Set @Return = 0
  3544.             
  3545.         if @Return = 0 
  3546.         Begin 
  3547.         
  3548.             Set @AppID  = null
  3549.             Set @ScopeID= null 
  3550.             
  3551.             if @ParentType = 1
  3552.             Begin
  3553.                 Set @AppId = @ParentID
  3554.                 -- get info for auditing
  3555.                 IF @SaclIsOn = 1
  3556.                     BEGIN
  3557.                         SELECT @parentName=app.Name, @parentGuid=app.ObjectGuid FROM [dbo].[AzMan_AzApplication] app
  3558.                             WHERE app.ID = @ParentID
  3559.                     END
  3560.             End
  3561.             else if @ParentType = 4
  3562.             Begin
  3563.                 Set @ScopeID = @ParentID
  3564.                 -- get info for auditing
  3565.                 IF @SaclIsOn = 1
  3566.                     BEGIN
  3567.                         SELECT @parentName=scope.Name, @parentGuid=scope.ObjectGuid FROM [dbo].[AzMan_AzScope] scope
  3568.                             WHERE scope.ID = @ParentID
  3569.                     END
  3570.             End
  3571.             else
  3572.             Begin
  3573.                 Set @Return = -1
  3574.                 Return
  3575.             End
  3576.     
  3577.             Insert Into [dbo].[AzMan_AzRoleAssignment]
  3578.             (
  3579.                   [ObjectGuid]
  3580.                 , [AppID]
  3581.                 , [ScopeID]
  3582.                 , [ParentType]
  3583.                 , [Name]
  3584.                 , [Description]
  3585.                 , [ApplicationData]
  3586.             )
  3587.  
  3588.             Values
  3589.             (
  3590.                   @ObjectGuid
  3591.                 , @AppID
  3592.                 , @ScopeID
  3593.                 , @ParentType
  3594.                 , @Name
  3595.                 , @Description
  3596.                 , @ApplicationData
  3597.             )
  3598.  
  3599.             SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  3600.             If @RowCount = 1
  3601.             Begin
  3602.  
  3603.                 Set @ID = Cast(SCOPE_IDENTITY() As [int])
  3604.             End
  3605.             Else
  3606.             Begin
  3607.                 Set @Return = @Error
  3608.             End
  3609.  
  3610.  
  3611.         End         
  3612.         
  3613.     -- generate an audit
  3614.     IF @SaclIsOn = 1
  3615.         BEGIN
  3616.             EXEC [AzMan_SP_GenerateObjectAudit]
  3617.                     @Return,
  3618.                     0,  -- 0 for SE_AUDITID_AZ_SQL_OBJECT_CREATE
  3619.                     @ParentType,
  3620.                     @parentName,
  3621.                     @parentGuid,
  3622.                     6,  -- 6 for role
  3623.                     @Name,
  3624.                     @ObjectGuid,
  3625.                     N'' -- no other info  
  3626.         END
  3627. Done:
  3628.           
  3629. Set NoCount Off
  3630.  
  3631. Return(@Return)
  3632.  
  3633. GO
  3634.  
  3635. Create Procedure [AzMan_SPU_AzAuthorizationStore]
  3636.  
  3637. -- Update an existing record in [AzMan_AzAuthorizationStore] table
  3638.  
  3639. (
  3640.   @Return [int] output
  3641. , @ID [int]
  3642. , @ConsiderNull_Description bit = 0
  3643. , @ConsiderNull_ApplicationData bit = 0
  3644. , @DomainTimeout [int] = Null                           
  3645. , @ConsiderNull_DomainTimeout bit = 0
  3646. , @ScriptEngineTimeout [int] = Null                     
  3647. , @ConsiderNull_ScriptEngineTimeout bit = 0
  3648. , @MaxScriptEngines [int] = Null                        
  3649. , @ConsiderNull_MaxScriptEngines bit = 0
  3650. , @ConsiderNull_TargetMachine bit = 0
  3651. , @ApplyStoreSacl [bit] = Null                          
  3652. , @ConsiderNull_ApplyStoreSacl bit = 0
  3653. , @GenerateAudits [bit] = Null                          
  3654. , @ConsiderNull_GenerateAudits bit = 0
  3655. , @MajorVersion [int] = Null                            
  3656. , @ConsiderNull_MajorVersion bit = 0
  3657. , @MinorVersion [int] = Null                            
  3658. , @ConsiderNull_MinorVersion bit = 0
  3659. , @TargetMachine [nvarchar](50) = Null                  
  3660. , @Description [nvarchar](1024) = Null                  
  3661. , @ApplicationData [ntext] = Null                       
  3662. )
  3663.  
  3664. As
  3665.  
  3666. DECLARE @RowCount INT, @Error INT
  3667. DECLARE @ObjectName nvarchar(512)
  3668. DECLARE @ObjectGuid uniqueidentifier
  3669. Declare @AccessAtObjType [tinyint]
  3670. DECLARE @SaclIsOn [bit]
  3671. Set @SaclIsOn = 0
  3672. Set @Return = 0
  3673.  
  3674. Set NoCount On
  3675.  
  3676.  
  3677.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@Id, 0, 1, @SaclIsOn output
  3678.     
  3679.     -- Require Admin Access
  3680.     if @Return <> 1 
  3681.     Begin
  3682.         if (@Return >= 2)
  3683.         Begin
  3684.             Set @Return = -5 
  3685.         End
  3686.         goto Done
  3687.     End
  3688.  
  3689. Set @Return = 0 -- no error
  3690.  
  3691. If @ConsiderNull_Description Is Null
  3692.     Set @ConsiderNull_Description = 0
  3693.  
  3694. If @ConsiderNull_ApplicationData Is Null
  3695.     Set @ConsiderNull_ApplicationData = 0
  3696.  
  3697. If @ConsiderNull_DomainTimeout Is Null
  3698.     Set @ConsiderNull_DomainTimeout = 0
  3699.  
  3700. If @ConsiderNull_ScriptEngineTimeout Is Null
  3701.     Set @ConsiderNull_ScriptEngineTimeout = 0
  3702.  
  3703. If @ConsiderNull_MaxScriptEngines Is Null
  3704.     Set @ConsiderNull_MaxScriptEngines = 0
  3705.  
  3706. If @ConsiderNull_TargetMachine Is Null
  3707.     Set @ConsiderNull_TargetMachine = 0
  3708.  
  3709. If @ConsiderNull_ApplyStoreSacl Is Null
  3710.     Set @ConsiderNull_ApplyStoreSacl = 0
  3711.  
  3712. If @ConsiderNull_GenerateAudits Is Null
  3713.     Set @ConsiderNull_GenerateAudits = 0
  3714.  
  3715. If @ConsiderNull_MajorVersion Is Null
  3716.     Set @ConsiderNull_MajorVersion = 0
  3717.  
  3718. If @ConsiderNull_MinorVersion Is Null
  3719.     Set @ConsiderNull_MinorVersion = 0
  3720.  
  3721. Update [dbo].[AzMan_AzAuthorizationStore]
  3722.  
  3723. Set
  3724.     [Description] = Case @ConsiderNull_Description When 0 Then IsNull(@Description, [Description]) When 1 Then @Description End
  3725.     ,[ApplicationData] = Case @ConsiderNull_ApplicationData When 0 Then IsNull(@ApplicationData, [ApplicationData]) When 1 Then @ApplicationData End
  3726.     ,[DomainTimeout] = Case @ConsiderNull_DomainTimeout When 0 Then IsNull(@DomainTimeout, [DomainTimeout]) When 1 Then @DomainTimeout End
  3727.     ,[ScriptEngineTimeout] = Case @ConsiderNull_ScriptEngineTimeout When 0 Then IsNull(@ScriptEngineTimeout, [ScriptEngineTimeout]) When 1 Then @ScriptEngineTimeout End
  3728.     ,[MaxScriptEngines] = Case @ConsiderNull_MaxScriptEngines When 0 Then IsNull(@MaxScriptEngines, [MaxScriptEngines]) When 1 Then @MaxScriptEngines End
  3729.     ,[TargetMachine] = Case @ConsiderNull_TargetMachine When 0 Then IsNull(@TargetMachine, [TargetMachine]) When 1 Then @TargetMachine End
  3730.     ,[ApplyStoreSacl] = Case @ConsiderNull_ApplyStoreSacl When 0 Then IsNull(@ApplyStoreSacl, [ApplyStoreSacl]) When 1 Then @ApplyStoreSacl End
  3731.     ,[GenerateAudits] = Case @ConsiderNull_GenerateAudits When 0 Then IsNull(@GenerateAudits, [GenerateAudits]) When 1 Then @GenerateAudits End
  3732.     ,[MajorVersion] = Case @ConsiderNull_MajorVersion When 0 Then IsNull(@MajorVersion, [MajorVersion]) When 1 Then @MajorVersion End
  3733.     ,[MinorVersion] = Case @ConsiderNull_MinorVersion When 0 Then IsNull(@MinorVersion, [MinorVersion]) When 1 Then @MinorVersion End
  3734.  
  3735. Where
  3736.          ([ID] = @ID) 
  3737.          
  3738.  
  3739.     SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  3740.     If @RowCount <> 1
  3741.     Begin
  3742.         Set @Return = @Error
  3743.     End
  3744.     
  3745.     -- get info for auditing
  3746.     IF @SaclIsOn = 1
  3747.         BEGIN
  3748.             SELECT @ObjectName=store.Name, @ObjectGuid = store.ObjectGuid FROM [dbo].[AzMan_AzAuthorizationStore] store
  3749.                 WHERE store.ID = @ID
  3750.             -- generate an audit
  3751.             EXEC [AzMan_SP_GenerateGenericAudit]
  3752.                     @Return,
  3753.                     0,  -- 0 for store
  3754.                     @ObjectName,
  3755.                     @ObjectGuid,
  3756.                     N'The shallow properties of the store may have been modified'
  3757.         END
  3758. Done:
  3759. Set NoCount Off
  3760.  
  3761. Return(@Return)
  3762.  
  3763.  
  3764. GO
  3765.  
  3766. Create Procedure [AzMan_SPU_AzScope]
  3767.  
  3768. -- Update an existing record in [AzMan_AzScope] table
  3769.  
  3770. (
  3771.   @Return [int] output
  3772. ,  @ID [int]                                    
  3773. , @AppId [int]              
  3774. , @ConsiderNull_Description bit = 0
  3775. , @ConsiderNull_ApplicationData bit = 0
  3776. , @NameHash [Binary] (32) = Null
  3777. , @Description [nvarchar](1024) = Null      
  3778. , @Name [ntext] = Null             
  3779. , @ApplicationData [ntext] = Null           
  3780.  
  3781. )
  3782.  
  3783. As
  3784.     Set NoCount On
  3785.  
  3786.     DECLARE @RowCount INT, @Error INT
  3787.     DECLARE @ObjectGuid uniqueidentifier
  3788.     DECLARE @iScopeNameLen int
  3789.     Declare @AccessAtObjType [tinyint]    
  3790.     DECLARE @SaclIsOn [bit]
  3791.     Set @SaclIsOn = 0
  3792.     
  3793.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@Id, 4, 1, @SaclIsOn output
  3794.     
  3795.     -- Require Admin Access
  3796.     if @Return <> 1 
  3797.     Begin
  3798.         if (@Return >= 2)
  3799.         Begin
  3800.             Set @Return = -5 
  3801.         End
  3802.         goto Done
  3803.     End
  3804.     
  3805.     -- Only store or app admin can modify property of the scope object
  3806.     if ( (@AccessAtObjType <> 0) and  (@AccessAtObjType <> 1) )
  3807.     begin
  3808.         Set @Return = -5 
  3809.         goto Done
  3810.     end
  3811.  
  3812.     Set @Return = 0 
  3813.  
  3814.     If @ConsiderNull_Description Is Null
  3815.         Set @ConsiderNull_Description = 0
  3816.  
  3817.     If @ConsiderNull_ApplicationData Is Null
  3818.         Set @ConsiderNull_ApplicationData = 0
  3819.  
  3820.     if @Name Is NOT NULL 
  3821.     Begin
  3822.         Exec AzMan_SP_Check_Dup_Scope @Return output, @AppID, @ID, @NameHash
  3823.     End
  3824.     
  3825.     if @Return = 0 
  3826.     Begin               
  3827.         set @iScopeNameLen = DATALENGTH(@Name)
  3828.         
  3829.             Update [dbo].[AzMan_AzScope]
  3830.             Set
  3831.                  [Name] = IsNull(@Name, [Name]) 
  3832.                 ,[NameHash] = IsNull(@NameHash, [NameHash]) 
  3833.                 ,[Description] = Case @ConsiderNull_Description When 0 Then IsNull(@Description, [Description]) When 1 Then @Description End
  3834.                 ,[ApplicationData] = Case @ConsiderNull_ApplicationData When 0 Then IsNull(@ApplicationData, [ApplicationData]) When 1 Then @ApplicationData End
  3835.             Where
  3836.                  ([ID] = @ID) 
  3837.                  
  3838.             SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  3839.             If @RowCount <> 1
  3840.             Begin
  3841.                 Set @Return = @Error
  3842.             End
  3843.  
  3844.     End              
  3845.     
  3846.     IF @SaclIsOn = 1
  3847.         BEGIN
  3848.             -- get info for auditing
  3849.             SELECT @ObjectGuid = scope.ObjectGuid FROM [dbo].[AzMan_AzScope] scope
  3850.                 WHERE scope.ID = @ID
  3851.  
  3852.             -- TODO Should we truncate the name for scopes?        
  3853.             -- generate an audit
  3854.             EXEC [AzMan_SP_GenerateGenericAudit]
  3855.                     @Return,
  3856.                     4,  -- 0 for scope
  3857.                     @Name,
  3858.                     @ObjectGuid,
  3859.                     N'The shallow properties of the scope may have been modified'
  3860.         END
  3861. Done:        
  3862.     Set NoCount Off
  3863.  
  3864.     Return(@Return)
  3865.  
  3866. GO
  3867.  
  3868. Create Procedure [AzMan_SPU_AzOperation]
  3869.  
  3870. -- Update an existing record in [AzMan_AzOperation] table
  3871.  
  3872. (
  3873.   @Return [int] output
  3874. , @ID [int]     
  3875. , @AppId [int]                          
  3876. , @ConsiderNull_Description bit = 0
  3877. , @ConsiderNull_ApplicationData bit = 0
  3878. , @OperationID [int] = Null                 
  3879. , @ConsiderNull_OperationID bit = 0
  3880. , @Name [nvarchar](64) = Null               
  3881. , @Description [nvarchar](1024) = Null      
  3882. , @ApplicationData [ntext] = Null           
  3883. )
  3884.  
  3885. As
  3886.     Set NoCount On
  3887.  
  3888.     DECLARE @RowCount INT, @Error INT
  3889.     DECLARE @ObjectGuid uniqueidentifier
  3890.     Declare @AccessAtObjType [tinyint]
  3891.     DECLARE @SaclIsOn [bit]
  3892.     Set @SaclIsOn = 0
  3893.     Set @Return = 0 
  3894.     
  3895.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 2, 1, @SaclIsOn output
  3896.     
  3897.     -- Require Admin Access
  3898.     if @Return <> 1 
  3899.     Begin
  3900.         if (@Return >= 2)
  3901.         Begin
  3902.             Set @Return = -5 
  3903.         End
  3904.         goto Done
  3905.     End 
  3906.  
  3907.     
  3908.     If @ConsiderNull_Description Is Null
  3909.         Set @ConsiderNull_Description = 0
  3910.  
  3911.     If @ConsiderNull_ApplicationData Is Null
  3912.         Set @ConsiderNull_ApplicationData = 0
  3913.  
  3914.     If @ConsiderNull_OperationID Is Null
  3915.         Set @ConsiderNull_OperationID = 0
  3916.     
  3917.     If @Name Is Not NULL
  3918.     Begin   
  3919.         Exec AzMan_SP_Check_Dup_Operation @Return output, @AppID, @ID, @Name
  3920.     End
  3921.     
  3922.     if @Return = 0  
  3923.     Begin   
  3924.         Update [dbo].[AzMan_AzOperation]
  3925.             Set
  3926.                 [Name] = IsNull(@Name, [Name]) 
  3927.                 ,[Description] = Case @ConsiderNull_Description When 0 Then IsNull(@Description, [Description]) When 1 Then @Description End
  3928.                 ,[ApplicationData] = Case @ConsiderNull_ApplicationData When 0 Then IsNull(@ApplicationData, [ApplicationData]) When 1 Then @ApplicationData End
  3929.                 ,[OperationID] = Case @ConsiderNull_OperationID When 0 Then IsNull(@OperationID, [OperationID]) When 1 Then @OperationID End
  3930.  
  3931.             Where
  3932.                        ([ID] = @ID)
  3933.                      
  3934.         SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  3935.         If @RowCount <> 1
  3936.         Begin
  3937.             Set @Return = @Error
  3938.         End
  3939.                  
  3940.     End
  3941.     
  3942.     -- get info for auditing
  3943.     IF @SaclIsOn = 1
  3944.         BEGIN
  3945.             SELECT @ObjectGuid = op.ObjectGuid FROM [dbo].[AzMan_AzOperation] op
  3946.                 WHERE op.ID = @ID
  3947.                 
  3948.             -- generate an audit
  3949.             EXEC [AzMan_SP_GenerateGenericAudit]
  3950.                     @Return,
  3951.                     2,  -- 2 for operation
  3952.                     @Name,
  3953.                     @ObjectGuid,
  3954.                     N'The shallow properties of the operation may have been modified'
  3955.         END
  3956. Done:
  3957. Set NoCount Off
  3958.  
  3959. Return(@Return)
  3960.  
  3961. GO
  3962.  
  3963. Create Procedure [AzMan_SPU_AzApplicationGroup]
  3964.  
  3965. -- Update an existing record in [AzMan_AzApplicationGroup] table
  3966.  
  3967. (
  3968.   @Return [int] output
  3969. , @ID [int] 
  3970. , @ParentType [tinyint]
  3971. , @ParentID   [int]
  3972. , @GroupType [tinyint] = Null 
  3973. , @ConsiderNull_GroupType bit = 0
  3974. , @ConsiderNull_GroupDescription bit = 0
  3975. , @Name [nvarchar](64) = Null 
  3976. , @Description [nvarchar](1024) = Null 
  3977. )
  3978.  
  3979. As
  3980.  
  3981. DECLARE @RowCount INT, @Error INT
  3982. DECLARE @ObjectGuid uniqueidentifier
  3983. Declare @AccessAtObjType [tinyint]
  3984. DECLARE @SaclIsOn [bit]
  3985. Set @SaclIsOn = 0
  3986. Set @Return = 0
  3987.  
  3988. Set NoCount On
  3989.  
  3990.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 5, 1, @SaclIsOn output
  3991.     
  3992.     -- Require Admin Access
  3993.     if @Return <> 1 
  3994.     Begin
  3995.         if (@Return >= 2)
  3996.         Begin
  3997.             Set @Return = -5 
  3998.         End
  3999.         goto Done
  4000.     End
  4001.     
  4002. If @ConsiderNull_GroupType Is Null
  4003.     Set @ConsiderNull_GroupType = 0
  4004.     
  4005.     if @Name IS NOT NULL    
  4006.     Begin
  4007.         Exec AzMan_SP_Check_Dup_Group @Return output, @ParentID, @ParentType, @ID, @Name
  4008.     End     
  4009.     
  4010.     if @Return = 0
  4011.     Begin
  4012.  
  4013.         Update [dbo].[AzMan_AzApplicationGroup]
  4014.  
  4015.         Set
  4016.             [Name] = IsNull(@Name, [Name]) 
  4017.             ,[GroupType] = 
  4018.                 Case @ConsiderNull_GroupType 
  4019.                     When 0 Then IsNull(@GroupType, [GroupType]) 
  4020.                     When 1 Then @GroupType 
  4021.                 End
  4022.             ,[Description] = 
  4023.                 Case @ConsiderNull_GroupDescription 
  4024.                     When 0 Then IsNull(@Description, [Description]) 
  4025.                     When 1 Then @Description 
  4026.                 End
  4027.         Where
  4028.                  ([ID] = @ID)
  4029.                  
  4030.             SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  4031.             If @RowCount <> 1
  4032.             Begin
  4033.                 Set @Return = @Error
  4034.             End
  4035.     End
  4036.     
  4037.     -- get info for auditing
  4038.     IF @SaclIsOn = 1
  4039.         BEGIN
  4040.             SELECT @ObjectGuid = appGroup.ObjectGuid FROM [dbo].[AzMan_AzApplicationGroup] appGroup
  4041.                 WHERE appGroup.ID = @ID
  4042.                 
  4043.             -- generate an audit
  4044.             EXEC [AzMan_SP_GenerateGenericAudit]
  4045.                     @Return,
  4046.                     5,  -- 5 for application group
  4047.                     @Name,
  4048.                     @ObjectGuid,
  4049.                     N'The shallow properties of the application group may have been modified'
  4050.         END
  4051. Done:
  4052. Set NoCount Off
  4053.  
  4054. Return(@Return)
  4055.  
  4056. GO
  4057.  
  4058. Create Procedure [AzMan_SPU_AzTask]
  4059.  
  4060. -- Update an existing record in  table
  4061.  
  4062. (
  4063.   @Return [int] output
  4064. , @ID [int] 
  4065. , @ParentID   [int]
  4066. , @ParentType [tinyint]
  4067. , @ConsiderNull_Description bit = 0
  4068. , @IsRoleDefinition [bit] = Null 
  4069. , @ConsiderNull_IsRoleDefinition bit = NULL
  4070. , @ConsiderNull_ApplicationData bit = NULL
  4071. , @Name [nvarchar](64) = Null 
  4072. , @Description [nvarchar](1024) = Null 
  4073. , @ApplicationData [ntext] = Null           
  4074. )
  4075.  
  4076. As
  4077.     DECLARE @ObjectGuid uniqueidentifier
  4078.     Set NoCount On
  4079.     
  4080.     DECLARE @RowCount INT, @Error INT
  4081.     Declare @AccessAtObjType [tinyint]
  4082.     DECLARE @SaclIsOn [bit]
  4083.     Set @SaclIsOn = 0
  4084.     
  4085.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 3, 1, @SaclIsOn output
  4086.     
  4087.     -- Require Admin Access
  4088.     if @Return <> 1 
  4089.     Begin
  4090.         if (@Return >= 2)
  4091.         Begin
  4092.             Set @Return = -5 
  4093.         End
  4094.         goto Done
  4095.     End
  4096.  
  4097.     Set @Return = 0
  4098.  
  4099.     If @ConsiderNull_Description Is Null
  4100.         Set @ConsiderNull_Description = 0
  4101.  
  4102.     if @ConsiderNull_IsRoleDefinition is NULL
  4103.         Set @ConsiderNull_IsRoleDefinition = 0
  4104.         
  4105.     If @ConsiderNull_ApplicationData Is Null
  4106.         Set @ConsiderNull_ApplicationData = 0
  4107.  
  4108.     if @Name Is Not NULL
  4109.     Begin
  4110.         Exec AzMan_SP_Check_Dup_Task @Return output, @ParentID, @ParentType, @ID, @Name
  4111.     End     
  4112.     
  4113.     if @Return = 0      
  4114.     Begin 
  4115.         Update [dbo].[AzMan_AzTask]
  4116.  
  4117.         Set
  4118.              [Name] = IsNull(@Name, [Name]) 
  4119.             ,[Description] = Case @ConsiderNull_Description When 0 Then IsNull(@Description, [Description]) When 1 Then @Description End
  4120.             ,[IsRoleDefinition] = Case @ConsiderNull_IsRoleDefinition When 0 Then IsNull(@IsRoleDefinition, [IsRoleDefinition]) When 1 Then @IsRoleDefinition End
  4121.             ,[ApplicationData] = Case @ConsiderNull_ApplicationData When 0 Then IsNull(@ApplicationData, [ApplicationData]) When 1 Then @ApplicationData End
  4122.  
  4123.         Where
  4124.                  ([ID] = @ID)
  4125.                  
  4126.         SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  4127.         If @RowCount <> 1
  4128.         Begin
  4129.             Set @Return = @Error
  4130.         End
  4131.                  
  4132.     End
  4133.     
  4134.     -- get info for auditing
  4135.     IF @SaclIsOn = 1
  4136.         BEGIN
  4137.             SELECT @ObjectGuid = task.ObjectGuid FROM [dbo].[AzMan_AzTask] task
  4138.                 WHERE task.ID = @ID
  4139.                 
  4140.             -- generate an audit
  4141.             EXEC [AzMan_SP_GenerateGenericAudit]
  4142.                     @Return,
  4143.                     3,  -- 3 for task
  4144.                     @Name,
  4145.                     @ObjectGuid,
  4146.                     N'The shallow properties of the task may have been modified'
  4147.         END
  4148. Done:
  4149.     Set NoCount Off
  4150.  
  4151.     Return(@Return)
  4152.     
  4153. GO
  4154.  
  4155. Create Procedure [AzMan_SPU_AzRoleAssignment]
  4156.  
  4157. -- Update an existing record in the table
  4158.  
  4159. (
  4160.   @Return [int] output
  4161. , @ID [int] 
  4162. , @ParentID   [int]
  4163. , @ParentType [tinyint]
  4164. , @ConsiderNull_Description bit = 0
  4165. , @ConsiderNull_ApplicationData bit = NULL
  4166. , @Name [nvarchar](64) = Null 
  4167. , @Description [nvarchar](1024) = Null 
  4168. , @ApplicationData [ntext] = Null
  4169. )
  4170.  
  4171. As
  4172.  
  4173. Set NoCount On
  4174.  
  4175. DECLARE @RowCount INT, @Error INT
  4176. DECLARE @ObjectGuid uniqueidentifier
  4177. Declare @AccessAtObjType [tinyint]
  4178. DECLARE @SaclIsOn [bit]
  4179. Set @SaclIsOn = 0
  4180.     
  4181.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 6, 1, @SaclIsOn output
  4182.     
  4183.     -- Require Admin Access
  4184.     if @Return <> 1 
  4185.     Begin
  4186.         if (@Return >= 2)
  4187.         Begin
  4188.             Set @Return = -5 
  4189.         End
  4190.         goto Done
  4191.     End
  4192.  
  4193.     Set @Return = 0
  4194.  
  4195.     If @ConsiderNull_Description Is Null
  4196.         Set @ConsiderNull_Description = 0
  4197.         
  4198.     If @ConsiderNull_ApplicationData Is Null
  4199.         Set @ConsiderNull_ApplicationData = 0
  4200.         
  4201.  
  4202.     IF @Name Is Not NULL
  4203.     Begin
  4204.             Exec AzMan_SP_Check_Dup_RoleAssignment @Return output, @ParentID, @ParentType, @ID, @Name
  4205.     End
  4206.  
  4207.     if @Return = 0
  4208.     Begin
  4209.         Update [dbo].[AzMan_AzRoleAssignment]
  4210.  
  4211.         Set
  4212.              [Name] = IsNull(@Name, [Name]) 
  4213.             ,[Description] = Case @ConsiderNull_Description When 0 Then IsNull(@Description, [Description]) When 1 Then @Description End
  4214.             ,[ApplicationData] = Case @ConsiderNull_ApplicationData When 0 Then IsNull(@ApplicationData, [ApplicationData]) When 1 Then @ApplicationData End            
  4215.         Where
  4216.                  ([ID] = @ID)
  4217.                  
  4218.         SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  4219.         If @RowCount <> 1
  4220.         Begin
  4221.             Set @Return = @Error
  4222.         End
  4223.                  
  4224.     End              
  4225.     -- get info for auditing
  4226.     IF @SaclIsOn = 1
  4227.         BEGIN
  4228.             SELECT @ObjectGuid = role.ObjectGuid FROM [dbo].[AzMan_AzRoleAssignment] role
  4229.                 WHERE role.ID = @ID
  4230.                 
  4231.             -- generate an audit
  4232.             EXEC [AzMan_SP_GenerateGenericAudit]
  4233.                     @Return,
  4234.                     6,  -- 6 for role
  4235.                     @Name,
  4236.                     @ObjectGuid,
  4237.                     N'The shallow properties of the role assignment may have been modified'
  4238.         END
  4239. Done:
  4240. Set NoCount Off
  4241.  
  4242. Return(@Return)
  4243.  
  4244. GO
  4245.  
  4246. IF EXISTS (SELECT name FROM sysobjects
  4247.         WHERE name = 'AzMan_SPIU_AzApplicationGroup_LDAPQuery' and type = 'P')
  4248.     DROP PROCEDURE AzMan_SPIU_AzApplicationGroup_LDAPQuery
  4249. GO
  4250.  
  4251. Create Procedure [AzMan_SPIU_AzApplicationGroup_LDAPQuery]
  4252.  
  4253. -- Inserts or updates a record in [AzMan_LDAPQuery] table
  4254. (
  4255.   @Return [int] output
  4256. , @GroupId [int] = Null     -- ID Of Application Group
  4257. , @ConsiderNull_LdapQuery bit = 0
  4258. , @LdapQuery [ntext] = Null -- LDAP Query
  4259. )
  4260.  
  4261. As
  4262.  
  4263. Set NoCount On
  4264.  
  4265. DECLARE @RowCount INT, @Error INT
  4266. DECLARE @Name nvarchar(512)
  4267. DECLARE @ID [int] 
  4268. DECLARE @ObjectGuid uniqueidentifier
  4269. Declare @ExistingLdapQueryID [int]
  4270. Declare @AccessAtObjType [tinyint]
  4271. Set @ExistingLdapQueryID = Null
  4272. DECLARE @SaclIsOn [bit]
  4273. Set @SaclIsOn = 0
  4274.     
  4275.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@GroupId, 5, 1, @SaclIsOn output
  4276.     
  4277.     -- Require Admin Access
  4278.     if @Return <> 1 
  4279.     Begin
  4280.         if (@Return >= 2)
  4281.         Begin
  4282.             Set @Return = -5 
  4283.         End
  4284.         goto Done
  4285.     End
  4286.  
  4287. Set @Return = 0
  4288.  
  4289. Select @ExistingLdapQueryID = [LdapQueryID] From [dbo].[AzMan_AzApplicationGroup] Where [ID] = @GroupID  
  4290. SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  4291.  
  4292. if @Error=0 
  4293. Begin 
  4294.   if @RowCount = 0
  4295.   Begin
  4296.   -- Parent Group was not found
  4297.   Set @Return = 1
  4298.   Return(1)
  4299.   End
  4300. End
  4301. else
  4302. Begin
  4303.   Return @Error
  4304. End
  4305.  
  4306. If @ExistingLdapQueryID Is Null
  4307.     Begin
  4308.         Begin
  4309.     
  4310.             Insert Into [dbo].[AzMan_LDAPQuery]
  4311.             (
  4312.                   [GroupId]
  4313.                 , [LdapQuery]
  4314.             )
  4315.     
  4316.             Values
  4317.             (
  4318.                   @GroupId
  4319.                 , @LdapQuery
  4320.             )
  4321.             
  4322.             SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  4323.             If @RowCount = 1
  4324.             Begin
  4325.  
  4326.                 Set @ID = Cast(SCOPE_IDENTITY() As [int])
  4327.                 
  4328.                 -- Update the AzApplication Groups with the new ID
  4329.                 if @ID <> 0
  4330.                 Begin
  4331.                     Update [dbo].[AzMan_AzApplicationGroup] 
  4332.                         Set [LdapQueryID] = @ID
  4333.                     where [ID] = @GroupID                   
  4334.                 End             
  4335.             End
  4336.             Else
  4337.             Begin
  4338.                 Set @Return = @Error
  4339.             End
  4340.         End
  4341.     End
  4342. Else
  4343.     Begin
  4344.  
  4345.         If @ConsiderNull_LdapQuery Is Null
  4346.             Set @ConsiderNull_LdapQuery = 0
  4347.  
  4348.         Update [dbo].[AzMan_LDAPQuery]
  4349.         Set
  4350.           [GroupId] = @GroupId
  4351.         ,[LdapQuery] = Case @ConsiderNull_LdapQuery When 0 Then IsNull(@LdapQuery, [LdapQuery]) When 1 Then @LdapQuery End
  4352.         Where
  4353.             [ID] = @ExistingLdapQueryID
  4354.  
  4355.         SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  4356.         
  4357.         if @RowCount <> 1 
  4358.             Set @ID = @ExistingLdapQueryID
  4359.         else
  4360.         Begin
  4361.             Set @Return = @Error
  4362.         End
  4363.     End
  4364.     
  4365.     -- get info for auditing
  4366.     IF @SaclIsOn = 1
  4367.         BEGIN
  4368.             SELECT @Name=appGroup.Name, @ObjectGuid = appGroup.ObjectGuid FROM [dbo].[AzMan_AzApplicationGroup] appGroup
  4369.                 WHERE appGroup.ID = @GroupId
  4370.                 
  4371.             -- generate an audit
  4372.             EXEC [AzMan_SP_GenerateGenericAudit]
  4373.                     @Return,
  4374.                     5,  -- 5 for group
  4375.                     @Name,
  4376.                     @ObjectGuid,
  4377.                     N'The LDAP query of the application may have been modified'
  4378.         END
  4379. Done:
  4380. Set NoCount Off
  4381.  
  4382. Return(@Return)
  4383.  
  4384. GO
  4385.  
  4386.  
  4387. Create Procedure [AzMan_SPIU_Bizrule]
  4388. (
  4389.   @Return [int] output,
  4390.   @ParentId [int] 
  4391. , @ParentType [tinyint] 
  4392. , @BizRuleImportedPath [nvarchar](512) = Null   -- for [AzMan_BizRule].[BizRuleImportedPath] column
  4393. , @ConsiderNull_BizRuleImportedPath bit = 0
  4394. , @BizRule [ntext] = Null                       -- for [AzMan_BizRule].[BizRule] column
  4395. , @ConsiderNull_BizRule bit = 0
  4396. , @BizRuleLanguage [nvarchar](64) = Null        -- for [AzMan_BizRule].[BizRuleLanguage] column
  4397. , @ConsiderNull_BizRuleLanguage bit = 0
  4398. )
  4399.  
  4400. As
  4401. DECLARE @RowCount INT, @Error INT
  4402. DECLARE @parentName nvarchar(512)
  4403. DECLARE @parentGuid uniqueidentifier
  4404. DECLARE @SaclIsOn [bit]
  4405. Set @SaclIsOn = 0
  4406.  
  4407. Set @Return = 0
  4408.  
  4409. Set NoCount On
  4410.  
  4411. Declare @ExistingBizruleID [int]
  4412. Declare @AccessAtObjType [tinyint]
  4413. Set @ExistingBizruleID = Null
  4414.  
  4415.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ParentID, @ParentType, 1, @SaclIsOn output
  4416.     
  4417.     -- Require Admin Access
  4418.     if @Return <> 1 
  4419.     Begin
  4420.         if (@Return >= 2)
  4421.         Begin
  4422.             Set @Return = -5 
  4423.         End
  4424.         goto Done
  4425.     End
  4426.  
  4427.  
  4428. Set @Return = 0
  4429.  
  4430. if @ParentType = 3 -- task
  4431. Begin
  4432.     Select @ExistingBizruleID = [BizruleID] 
  4433.     From [dbo].[AzMan_BizRule_To_Task]
  4434.     Where [TaskID] = @ParentID  
  4435. End
  4436.  
  4437. else if @ParentType = 5 -- group
  4438. Begin
  4439.     Select @ExistingBizruleID = [BizruleID] 
  4440.     From [dbo].[AzMan_BizRule_To_Group]
  4441.     Where [GroupID] = @ParentID  
  4442. End
  4443.     
  4444. SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  4445.  
  4446. If @ExistingBizruleID Is Null or @ExistingBizruleID = 0 
  4447.     Begin
  4448.         Begin
  4449.     
  4450.             Insert Into [dbo].[AzMan_BizRule]
  4451.             (
  4452.                   [ParentId]
  4453.                 , [ParentType]
  4454.                 , [BizRuleImportedPath] 
  4455.                 , [BizRule] 
  4456.                 , [BizRuleLanguage]
  4457.             )
  4458.     
  4459.             Values
  4460.             (
  4461.                   @ParentId
  4462.                  ,@ParentType
  4463.                  ,@BizRuleImportedPath 
  4464.                  ,@BizRule 
  4465.                  ,@BizRuleLanguage
  4466.             )
  4467.  
  4468.             SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  4469.             If @RowCount = 1
  4470.             Begin
  4471.                 Set @ExistingBizruleID = Cast(SCOPE_IDENTITY() As [int])
  4472.                 
  4473.                 -- Update the AzApplication Groups or Task with the new ID
  4474.             
  4475.                 if @ExistingBizruleID <> 0
  4476.                 
  4477.                     if @ParentType = 3 -- task
  4478.                     Begin
  4479.                         insert [dbo].[AzMan_BizRule_To_Task] 
  4480.                         (
  4481.                             [TaskID] ,
  4482.                             [BizRuleID]
  4483.                         )
  4484.                         Values
  4485.                         (
  4486.                             @ParentID ,
  4487.                             @ExistingBizruleID
  4488.                         )
  4489.                     End
  4490.  
  4491.                     else if @ParentType = 5 -- group
  4492.                     Begin
  4493.                         insert [dbo].[AzMan_BizRule_To_Group] 
  4494.                         (
  4495.                             [GroupID] ,
  4496.                             [BizRuleID]
  4497.                         )
  4498.                         Values
  4499.                         (
  4500.                             @ParentID ,
  4501.                             @ExistingBizruleID
  4502.                         )
  4503.                     End
  4504.             End         
  4505.             Else
  4506.             Begin
  4507.                 Set @Return = @Error
  4508.             End
  4509.                     
  4510.         End
  4511.     End
  4512. Else
  4513.     Begin
  4514.  
  4515.         If @ConsiderNull_BizRuleImportedPath Is Null
  4516.             set @ConsiderNull_BizRuleImportedPath = 0 
  4517.             
  4518.         If @ConsiderNull_BizRule Is Null
  4519.             set @ConsiderNull_BizRule = 0
  4520.             
  4521.         If @ConsiderNull_BizRuleLanguage Is Null
  4522.             set @ConsiderNull_BizRuleLanguage = 0 
  4523.  
  4524.         Update [dbo].[AzMan_BizRule]
  4525.         Set
  4526.           [ParentId]   = @ParentId
  4527.         , [ParentType] = @ParentType
  4528.         , [BizRuleImportedPath] = Case @ConsiderNull_BizRuleImportedPath When 0 Then IsNull(@BizRuleImportedPath, [BizRuleImportedPath]) When 1 Then @BizRuleImportedPath End
  4529.         , [BizRule] = Case @ConsiderNull_BizRule When 0 Then IsNull(@BizRule, [BizRule]) When 1 Then @BizRule End
  4530.         , [BizRuleLanguage] = Case @ConsiderNull_BizRuleLanguage When 0 Then IsNull(@BizRuleLanguage, [BizRuleLanguage]) When 1 Then @BizRuleLanguage End
  4531.  
  4532.         Where
  4533.             [ID] = @ExistingBizruleID
  4534.             
  4535.         SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  4536.                             
  4537.         if @RowCount = 0 
  4538.         Begin
  4539.             if @Error = 0
  4540.             Begin
  4541.                 Set @Return = -1168 -- Error updating the Record
  4542.             End
  4543.             Else
  4544.             Begin
  4545.                 Set @Return = @Error 
  4546.             End
  4547.             
  4548.         End
  4549.     End
  4550.     
  4551.     -- generate an audit
  4552.     IF @SaclIsOn = 1
  4553.         BEGIN
  4554.             -- get info for auditing
  4555.             IF @ParentType = 3 -- task
  4556.                 BEGIN
  4557.                     SELECT @parentName=task.Name, @parentGuid = task.ObjectGuid 
  4558.                         FROM [dbo].[AzMan_AzTask] task WHERE task.ID = @ParentId
  4559.                 END
  4560.             ELSE IF @ParentType = 5 -- app group
  4561.                 BEGIN
  4562.                     SELECT @parentName=appGroup.Name, @parentGuid = appGroup.ObjectGuid 
  4563.                         FROM [dbo].[AzMan_AzApplicationGroup] appGroup WHERE appGroup.ID = @ParentId
  4564.                 END
  4565.             
  4566.             EXEC [AzMan_SP_GenerateGenericAudit]
  4567.                     @Return,
  4568.                     @parentType,
  4569.                     @parentName,
  4570.                     @parentGuid,
  4571.                     N'The bizrule of the object may have been modified'
  4572.         END
  4573. Done:
  4574. Set NoCount Off
  4575.  
  4576. Return(@Return)
  4577.  
  4578. GO
  4579.  
  4580. Create Procedure dbo.[AzMan_SPIU_AzApplicationGroup_Bizrule]
  4581. (
  4582.   @Return [int] output
  4583. , @GroupId [int] 
  4584. , @ConsiderNull_BizRuleImportedPath bit = 0
  4585. , @ConsiderNull_BizRule bit = 0
  4586. , @ConsiderNull_BizRuleLanguage bit = 0
  4587. , @BizRuleLanguage [nvarchar](64) = Null        -- for [AzMan_BizRule].[BizRuleLanguage] column
  4588. , @BizRuleImportedPath [nvarchar](512) = Null   -- for [AzMan_BizRule].[BizRuleImportedPath] column
  4589. , @BizRule [ntext] = Null                       -- for [AzMan_BizRule].[BizRule] column
  4590.  
  4591. )
  4592. As
  4593.  
  4594.     Set @Return = 0
  4595.     exec AzMan_SPIU_Bizrule   @Return output, @GroupId, 5
  4596.             , @BizRuleImportedPath 
  4597.             , @ConsiderNull_BizRuleImportedPath 
  4598.             , @BizRule 
  4599.             , @ConsiderNull_BizRule 
  4600.             , @BizRuleLanguage 
  4601.             , @ConsiderNull_BizRuleLanguage 
  4602.  
  4603. Return @Return
  4604.  
  4605. Go
  4606.  
  4607. Create Procedure dbo.[AzMan_SPIU_AzTask_Bizrule]
  4608. (
  4609.   @Return [int] output
  4610. , @TaskId [int] 
  4611. , @ConsiderNull_BizRuleImportedPath bit = 0
  4612. , @ConsiderNull_BizRule bit = 0
  4613. , @ConsiderNull_BizRuleLanguage bit = 0
  4614. , @BizRuleLanguage [nvarchar](64) = Null        -- for [AzMan_BizRule].[BizRuleLanguage] column
  4615. , @BizRuleImportedPath [nvarchar](512) = Null   -- for [AzMan_BizRule].[BizRuleImportedPath] column
  4616. , @BizRule [ntext] = Null                       -- for [AzMan_BizRule].[BizRule] column
  4617.  
  4618. )
  4619. As
  4620.  
  4621. Set @Return = 0
  4622.     exec AzMan_SPIU_Bizrule   @Return output, @TaskId,  3
  4623.             , @BizRuleImportedPath 
  4624.             , @ConsiderNull_BizRuleImportedPath 
  4625.             , @BizRule 
  4626.             , @ConsiderNull_BizRule 
  4627.             , @BizRuleLanguage 
  4628.             , @ConsiderNull_BizRuleLanguage 
  4629.  
  4630. Return @Return
  4631.  
  4632. Go
  4633.  
  4634.  
  4635. Create Procedure [AzMan_SPI_AzApplicationGroup_Single_SidMember]
  4636.  
  4637. (
  4638.   @Return [int] output,
  4639.   @GroupId [int]            -- ID Of Application Group
  4640. , @IsMember [bit]           = 0 
  4641. , @SidMember varbinary(85)
  4642. , @SaclIsOn [bit]
  4643. )
  4644. As
  4645.  
  4646. DECLARE @RowCount INT, @Error INT
  4647. DECLARE @parentName nvarchar(512)
  4648. DECLARE @parentGuid uniqueidentifier
  4649.  
  4650. Set @Return = 0
  4651.  
  4652. Set NoCount On
  4653.  
  4654.     INSERT INTO [AzMan_Group_SIDMember] 
  4655.         (MemberSID, Member, GroupID) 
  4656.     VALUES 
  4657.         (@SidMember, @IsMember, @GroupID)
  4658.         
  4659.     SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  4660.     If @RowCount <> 1
  4661.     Begin
  4662.         if @Error <> 0 
  4663.         Begin   
  4664.             Set @Return = @Error
  4665.         End
  4666.         else
  4667.         Begin
  4668.             Set @Return = -1 --Generic Error
  4669.         End 
  4670.     End
  4671.     
  4672.     -- get the info for auditing
  4673.     IF @SaclIsOn = 1
  4674.         BEGIN
  4675.             SELECT @parentName = appGroup.Name, @parentGuid = appGroup.ObjectGuid FROM [dbo].[AzMan_AzApplicationGroup] appGroup
  4676.                 WHERE appGroup.ID = @GroupId
  4677.  
  4678.             -- generate an audit
  4679.             IF @IsMember = 1
  4680.                 EXEC [AzMan_SP_GenerateMemberAudit]
  4681.                         @Return,
  4682.                         4,  -- 4 for SE_AUDITID_AZ_SQL_MEMBER_ASSIGN
  4683.                         5,  -- 5 for group
  4684.                         @parentName,
  4685.                         @parentGuid,
  4686.                         N'',
  4687.                         @SidMember,
  4688.                         1,  -- 1 for member
  4689.                         N'' -- no other info
  4690.             ELSE
  4691.                 EXEC [AzMan_SP_GenerateMemberAudit]
  4692.                         @Return,
  4693.                         4,  -- 4 for SE_AUDITID_AZ_SQL_MEMBER_ASSIGN
  4694.                         5,  -- 5 for group
  4695.                         @parentName,
  4696.                         @parentGuid,
  4697.                         N'',
  4698.                         @SidMember,
  4699.                         0,  -- 0 for non-member
  4700.                         N'' -- no other info
  4701.         END
  4702. Set NoCount Off
  4703.  
  4704. Return(@Return)
  4705.  
  4706. GO
  4707.  
  4708. Create Procedure [AzMan_SPD_AzApplicationGroup_Single_SidMember]
  4709.  
  4710. (
  4711.   @Return [int] output,
  4712.   @GroupId [int]            -- ID Of Application Group
  4713. , @IsMember [bit] = 1 
  4714. , @SidMember varbinary(85)
  4715. , @SaclIsOn [bit]
  4716. )
  4717. As
  4718.  
  4719. DECLARE @RowCount INT, @Error INT
  4720. DECLARE @parentName nvarchar(512)
  4721. DECLARE @parentGuid uniqueidentifier
  4722.  
  4723. Set @Return = 0
  4724.  
  4725. Set NoCount On
  4726.  
  4727.     Delete From [AzMan_Group_SIDMember] 
  4728.     where MemberSID    = @SidMember and
  4729.           Member   = @IsMember and
  4730.           GroupID = @GroupID
  4731.  
  4732.     SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  4733.     If @RowCount <> 1
  4734.     Begin
  4735.         if @Error <> 0 
  4736.         Begin   
  4737.             Set @Return = @Error
  4738.         End
  4739.         else
  4740.         Begin
  4741.             Set @Return = -1168 --REcord not found
  4742.         End 
  4743.     End
  4744.     
  4745.     -- get info for auditing
  4746.     IF @SaclIsOn = 1
  4747.         BEGIN
  4748.             SELECT @parentName = appGroup.Name, @parentGuid = appGroup.ObjectGuid FROM [dbo].[AzMan_AzApplicationGroup] appGroup
  4749.                 WHERE appGroup.ID = @GroupId
  4750.  
  4751.             -- generate an audit
  4752.             IF @IsMember = 1
  4753.                 EXEC [AzMan_SP_GenerateMemberAudit]
  4754.                         @Return,
  4755.                         5,  -- 5 for SE_AUDITID_AZ_SQL_MEMBER_REMOVE
  4756.                         5,  -- 5 for group
  4757.                         @parentName,
  4758.                         @parentGuid,
  4759.                         N'',
  4760.                         @SidMember,
  4761.                         1,  -- 1 for member
  4762.                         N'' -- no other info
  4763.             ELSE
  4764.                 EXEC [AzMan_SP_GenerateMemberAudit]
  4765.                         @Return,
  4766.                         5,  -- 5 for SE_AUDITID_AZ_SQL_MEMBER_REMOVE
  4767.                         5,  -- 5 for group
  4768.                         @parentName,
  4769.                         @parentGuid,
  4770.                         N'',
  4771.                         @SidMember,
  4772.                         0,  -- 0 for non-member
  4773.                         N'' -- no other info
  4774.         END
  4775. Set NoCount Off
  4776.  
  4777. Return(@Return)
  4778.  
  4779. GO
  4780.  
  4781. Create Procedure [AzMan_SPI_AzApplicationGroup_Multi_SidMembers_Internal]
  4782. (
  4783.   @Return [int] output
  4784. , @GroupId [int]            -- ID Of Application Group
  4785. , @IsMember [bit] = 1
  4786. , @SidMembers varbinary (4000)
  4787. )
  4788. As
  4789. DECLARE @SaclIsOn [bit]
  4790. Set @SaclIsOn = 0
  4791.  
  4792. Set NoCount On
  4793.  
  4794. -- SidMembers are aggregated binary data in the following format:
  4795. --   The first 4 bytes is a delete/add flag (0/1); the following 4 bytes is the size of the SID, 
  4796. --   followed by the actual SID. The over-usage of these pieces of data is for ease of parsing
  4797. --   Using string to represent such encoding, the following example which encodes 3 SIDs 
  4798. --   of length 24, 36, and 48 in turn, and the second one is a delete
  4799. --   00010024NNNNNNNNN00000036NNNNNNNNNN00010048NNNNNNNNNNNNNN
  4800. -- Insert each one of them 
  4801.  
  4802.     Declare @AccessAtObjType [tinyint]
  4803.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@GroupID, 5, 1, @SaclIsOn output
  4804.     
  4805.     -- Require Admin Access
  4806.     if @Return <> 1 
  4807.     Begin
  4808.         if (@Return >= 2)
  4809.         Begin
  4810.             Set @Return = -5 
  4811.         End
  4812.         goto Done
  4813.     End
  4814.  
  4815. DECLARE @DataLength int
  4816. DECLARE @SidLength int
  4817. DECLARE @SidMember varbinary(85)
  4818. DECLARE @Pos int
  4819. DECLARE @isAdd int
  4820. SET @DataLength = DATALENGTH(@SidMembers)
  4821.  
  4822. Set @Return = 0
  4823. Set @Pos = 1
  4824.  
  4825. WHILE @DataLength - @Pos > 8
  4826.     BEGIN
  4827.         SET @isAdd = CAST(SUBSTRING(@SidMembers, @Pos, 1) AS int)
  4828.         SET @Pos = @Pos + 1
  4829.         
  4830.         SET @SidLength = CAST(SUBSTRING(@SidMembers, @Pos, 1) AS int)
  4831.         SET @Pos = @Pos + 1
  4832.  
  4833.         -- make sure that we the SidLength is not lying to us!
  4834.         IF @SidLength >= 12 AND @SidLength < 85 AND @DataLength - @Pos >= @SidLength - 1
  4835.             BEGIN
  4836.                 SET @SidMember = CAST(SUBSTRING(@SidMembers, @Pos, @SidLength) AS varbinary)
  4837.                 SET @Pos = @Pos + @SidLength        
  4838.  
  4839.                 -- if NNNN=0, then it means to delete
  4840.                 IF @isAdd <> 0
  4841.                     BEGIN
  4842.                         Exec AzMan_SPI_AzApplicationGroup_Single_SidMember @Return output, @GroupID, @IsMember, @SidMember, @SaclIsOn
  4843.                         IF @Return <> 0
  4844.                             Break
  4845.                     End 
  4846.                 ELSE
  4847.                     BEGIN
  4848.                         Exec AzMan_SPD_AzApplicationGroup_Single_SidMember @Return output, @GroupID, @IsMember ,@SidMember, @SaclIsOn
  4849.                         IF @Return <> 0
  4850.                             Break
  4851.                     End
  4852.             END
  4853.         ELSE
  4854.             SET @Pos = @DataLength
  4855.     END
  4856.  
  4857. Done:
  4858. Set NoCount Off
  4859.  
  4860. Return(@Return)
  4861.  
  4862. GO
  4863.  
  4864. Create Procedure [AzMan_SPI_AzApplicationGroup_Multi_SidMembers]
  4865.  
  4866. (
  4867.   @Return [int] output
  4868. , @GroupId [int]            -- ID Of Application Group
  4869. , @SidMembers varbinary (4000)
  4870. )
  4871. As
  4872.     Exec AzMan_SPI_AzApplicationGroup_Multi_SidMembers_Internal @Return output, @GroupID, 1 , @SidMembers
  4873.     Return(@Return)
  4874. go
  4875.  
  4876.  
  4877. Create Procedure AzMan_SPI_AzApplicationGroup_Multi_SidNonMembers
  4878.  
  4879. (
  4880.   @Return [int] output ,    
  4881.   @GroupId [int]            -- ID Of Application Group
  4882. , @SidMembers varbinary (4000)
  4883. )
  4884. As
  4885.     Exec AzMan_SPI_AzApplicationGroup_Multi_SidMembers_Internal @Return output, @GroupID, 0 , @SidMembers
  4886.     Return(@Return)
  4887. go
  4888.  
  4889.  
  4890. Create Procedure [AzMan_SPI_AzApplicationGroup_Single_AppMember]
  4891. (
  4892.   @Return [int] output,
  4893.   @GroupId [int]            -- ID Of Application Group
  4894. , @ChildID [int] 
  4895. , @IsMember [bit]           = 1 
  4896. , @SaclIsOn [bit]
  4897. )
  4898. As
  4899.  
  4900. DECLARE @RowCount INT, @Error INT
  4901. DECLARE @groupName nvarchar(512)
  4902. DECLARE @groupGuid uniqueidentifier
  4903. DECLARE @refGroupName nvarchar(512)
  4904. DECLARE @refGroupGuid uniqueidentifier
  4905.  
  4906. Set @Return = 0
  4907.  
  4908. Set NoCount On
  4909.  
  4910.     INSERT INTO [AzMan_Group_AppMember] 
  4911.         (ChildID, Member, GroupID) 
  4912.     VALUES 
  4913.         (@ChildID, @IsMember, @GroupID)
  4914.         
  4915.     SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  4916.     If @RowCount <> 1
  4917.     Begin
  4918.         if @Error <> 0 
  4919.         Begin   
  4920.             Set @Return = @Error
  4921.         End
  4922.         else
  4923.         Begin
  4924.             Set @Return = -1 --Generic Error
  4925.         End 
  4926.     End
  4927.     
  4928.     -- get info for auditing
  4929.     IF @SaclIsOn = 1
  4930.         BEGIN
  4931.             SELECT @groupName = appGroup.Name, @groupGuid = appGroup.ObjectGuid FROM [dbo].[AzMan_AzApplicationGroup] appGroup
  4932.                 WHERE appGroup.ID = @GroupId
  4933.             SELECT @refGroupName = refGroup.Name, @refGroupGuid = refGroup.ObjectGuid FROM [dbo].[AzMan_AzApplicationGroup] refGroup
  4934.                 WHERE refGroup.ID = @ChildID
  4935.                 
  4936.             -- generate an audit
  4937.             EXEC [AzMan_SP_GenerateObjectAudit]
  4938.                     @Return,
  4939.                     2,  -- 2 for SE_AUDITID_AZ_SQL_REFERENCE_ASSIGN
  4940.                     5,  -- 5 for application group
  4941.                     @groupName,
  4942.                     @groupGuid,
  4943.                     5,  -- 5 for application group
  4944.                     @refGroupName,
  4945.                     @refGroupGuid,
  4946.                     N'' -- no other info
  4947.         END
  4948. Set NoCount Off
  4949.  
  4950. Return @Return
  4951.  
  4952. GO
  4953.  
  4954. Create Procedure [AzMan_SPD_AzApplicationGroup_Single_AppMember]
  4955.  
  4956. (
  4957.   @Return [int] output,
  4958.   @GroupId [int]            -- ID Of Application Group
  4959. , @ChildID [int] 
  4960. , @IsMember [bit] = 1 
  4961. , @SaclIsOn [bit]
  4962. )
  4963. As
  4964.  
  4965. DECLARE @RowCount INT, @Error INT
  4966. DECLARE @groupName nvarchar(512)
  4967. DECLARE @groupGuid uniqueidentifier
  4968. DECLARE @refGroupName nvarchar(512)
  4969. DECLARE @refGroupGuid uniqueidentifier
  4970. Set @Return = 0
  4971.  
  4972. Set NoCount On
  4973.  
  4974.     Delete From [AzMan_Group_AppMember] 
  4975.     where ChildID    = @ChildID and
  4976.           Member   = @IsMember and
  4977.           GroupID = @GroupID
  4978.           
  4979.     SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  4980.     If @RowCount <> 1
  4981.     Begin
  4982.         if @Error <> 0 
  4983.         Begin   
  4984.             Set @Return = @Error
  4985.         End
  4986.         else
  4987.         Begin
  4988.             Set @Return = -1168 --Record not found
  4989.         End 
  4990.     End
  4991.     -- get info for auditing
  4992.     IF @SaclIsOn = 1
  4993.         BEGIN
  4994.             SELECT @groupName = appGroup.Name, @groupGuid = appGroup.ObjectGuid FROM [dbo].[AzMan_AzApplicationGroup] appGroup
  4995.                 WHERE appGroup.ID = @GroupId
  4996.             SELECT @refGroupName = refGroup.Name, @refGroupGuid = refGroup.ObjectGuid FROM [dbo].[AzMan_AzApplicationGroup] refGroup
  4997.                 WHERE refGroup.ID = @ChildID
  4998.                 
  4999.             -- generate an audit
  5000.             EXEC [AzMan_SP_GenerateObjectAudit]
  5001.                     @Return,
  5002.                     3,  -- 3 for SE_AUDITID_AZ_SQL_REFERENCE_REMOVE
  5003.                     5,  -- 5 for application group
  5004.                     @groupName,
  5005.                     @groupGuid,
  5006.                     5,  -- 5 for application group
  5007.                     @refGroupName,
  5008.                     @refGroupGuid,
  5009.                     N'' -- no other info
  5010.         END
  5011. Set NoCount Off
  5012.  
  5013. Return(@Return)
  5014.  
  5015. GO
  5016.  
  5017. Create Procedure [AzMan_SPI_AzApplicationGroup_Multi_AppMembers_Internal]
  5018.  
  5019. (
  5020.   @Return [int] output,
  5021.   @GroupId [int]            -- ID Of Application Group
  5022. , @SepChar [char] (1) = "|"
  5023. , @IsMember [bit] = 1 
  5024. , @AppMemberIDs [nvarchar] (4000)
  5025. )
  5026. As
  5027. DECLARE @SaclIsOn [bit]
  5028. Set @SaclIsOn = 0
  5029.  
  5030. Set NoCount On
  5031.  
  5032. -- First parse the SidMembers string
  5033. -- Insert each one of them 
  5034.  
  5035.     Declare @AccessAtObjType [tinyint]
  5036.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@GroupID, 5, 1, @SaclIsOn output
  5037.     
  5038.     -- Require Admin Access
  5039.     if @Return <> 1 
  5040.     Begin
  5041.         if (@Return >= 2)
  5042.         Begin
  5043.             Set @Return = -5 
  5044.         End
  5045.         goto Done
  5046.     End
  5047.  
  5048.  
  5049. DECLARE @AppMember varchar(100), @Pos int
  5050. DECLARE @iAppMemberID int
  5051. DECLARE @equal char
  5052. DECLARE @addOrDelete nvarchar(10)
  5053. DECLARE @isAdd int
  5054. SET @equal = '='
  5055.  
  5056.  
  5057.     Set @Return = 0
  5058.  
  5059.     SET @AppMemberIDs = LTRIM(RTRIM(@AppMemberIDs))+ @SepChar
  5060.     
  5061.     SET @Pos = CHARINDEX(@equal, @AppMemberIDs, 1)
  5062.  
  5063.     IF REPLACE(@AppMemberIDs, @SepChar, '') <> ''
  5064.     BEGIN
  5065.         WHILE @Pos > 0
  5066.         BEGIN
  5067.             SET @AppMember = LTRIM(RTRIM(LEFT(@AppMemberIDs, @Pos - 1)))
  5068.             Set @iAppMemberID = CAST(@AppMember as int)
  5069.             
  5070.             -- remove the left part (the id)
  5071.             SET @AppMemberIDs = RIGHT(@AppMemberIDs, LEN(@AppMemberIDs) - @Pos)
  5072.             
  5073.             -- now move to the pipe separator
  5074.             SET @Pos = CHARINDEX(@SepChar, @AppMemberIDs, 1)
  5075.             SET @addOrDelete = LTRIM(RTRIM(LEFT(@AppMemberIDs, @Pos - 1)))
  5076.             
  5077.             Set @isAdd = CAST(@addOrDelete as int)
  5078.             
  5079.             
  5080.             IF @iAppMemberID > 0
  5081.             BEGIN
  5082.                 
  5083.                 -- if NNNN=0, then it means to delete
  5084.                 IF @isAdd <> 0
  5085.                 BEGIN
  5086.                     Exec AzMan_SPI_AzApplicationGroup_Single_AppMember @Return output, @GroupID, @iAppMemberID , @IsMember, @SaclIsOn
  5087.  
  5088.                     if @Return <> 0
  5089.                     Begin
  5090.                         Break
  5091.                     End
  5092.                 End                 
  5093.                 else
  5094.                 BEGIN
  5095.                     Exec AzMan_SPD_AzApplicationGroup_Single_AppMember @Return output, @GroupID, @iAppMemberID , @IsMember, @SaclIsOn
  5096.                     if @Return <> 0
  5097.                     Begin
  5098.                         Break
  5099.                     End
  5100.                 End                 
  5101.                 
  5102.             END
  5103.             SET @AppMemberIDs = RIGHT(@AppMemberIDs, LEN(@AppMemberIDs) - @Pos)
  5104.             SET @Pos = CHARINDEX(@equal, @AppMemberIDs, 1)
  5105.         END
  5106.     END 
  5107.  
  5108. Done:
  5109. Set NoCount Off
  5110.  
  5111. Return(@Return)
  5112.  
  5113. GO
  5114.  
  5115. Create Procedure [AzMan_SPI_AzApplicationGroup_Multi_AppMembers]
  5116.  
  5117. (
  5118.   @Return [int] output
  5119. , @GroupId [int]            -- ID Of Application Group
  5120. , @SepChar [char] (1) = "|"
  5121. , @AppMemberIDs [nvarchar] (4000)
  5122. )
  5123. As
  5124.  
  5125.     Exec AzMan_SPI_AzApplicationGroup_Multi_AppMembers_Internal @Return output, @GroupID, @SepChar, 1 , @AppMemberIDs
  5126.  
  5127.     Return(@Return)
  5128. go
  5129.  
  5130. Create Procedure [AzMan_SPI_AzApplicationGroup_Multi_AppNonMembers]
  5131. (
  5132.   @Return [int] output
  5133. , @GroupId [int]            -- ID Of Application Group
  5134. , @SepChar [char] (1) = "|"
  5135. , @AppMemberIDs [nvarchar] (4000)
  5136. )
  5137. As
  5138.  
  5139.     Exec AzMan_SPI_AzApplicationGroup_Multi_AppMembers_internal @Return output, @GroupID, @SepChar, 0 , @AppMemberIDs
  5140.  
  5141.     Return(@Return)
  5142. go
  5143.  
  5144.  
  5145. Create Procedure [AzMan_SPI_AzRoleAssignment_Single_SidMember]
  5146. (
  5147.   @Return [int] output,
  5148.   @RoleId [int]             -- ID Of Role
  5149. , @SidMember varbinary (85)
  5150. , @SaclIsOn [bit]
  5151. )
  5152. As
  5153.  
  5154. DECLARE @RowCount INT, @Error INT
  5155. DECLARE @roleName nvarchar(512)
  5156. DECLARE @roleGuid uniqueidentifier
  5157.  
  5158. Set @Return = 0
  5159.  
  5160. Set NoCount On
  5161.  
  5162.     INSERT INTO [AzMan_Role_SIDMember] 
  5163.         (MemberSID,  RoleID) 
  5164.     VALUES 
  5165.         (@SidMember,@RoleID)
  5166.         
  5167.     SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  5168.     If @RowCount = 0
  5169.     Begin
  5170.         if @Error <> 0 
  5171.         Begin   
  5172.             Set @Return = @Error
  5173.         End
  5174.         else
  5175.         Begin
  5176.             Set @Return = -1 -- General Error
  5177.         End
  5178.     End
  5179.     
  5180.     -- get the info for auditing
  5181.     IF @SaclIsOn = 1
  5182.         BEGIN
  5183.             SELECT @roleName = Role.Name, @roleGuid = Role.ObjectGuid FROM [dbo].[AzMan_AzRoleAssignment] Role
  5184.                 WHERE Role.ID = @RoleID
  5185.  
  5186.             -- generate an audit
  5187.             EXEC [AzMan_SP_GenerateMemberAudit]
  5188.                     @Return,
  5189.                     4,  -- 4 for SE_AUDITID_AZ_SQL_MEMBER_ASSIGN
  5190.                     6,  -- 6 for role
  5191.                     @roleName,
  5192.                     @roleGuid,
  5193.                     N'',
  5194.                     @SidMember,
  5195.                     1,  -- 1 for member
  5196.                     N'' -- no other info
  5197.         END
  5198. Set NoCount Off
  5199.  
  5200. Return(@Return)
  5201.  
  5202. GO
  5203.  
  5204. Create Procedure [AzMan_SPD_AzRoleAssignment_Single_SidMember]
  5205. (
  5206.   @Return [int] output,
  5207.   @RoleId [int]             -- ID Of RoleAssignment
  5208. , @SidMember varbinary(85)
  5209. , @SaclIsOn [bit]
  5210. )
  5211. As
  5212.  
  5213. DECLARE @RowCount INT, @Error INT
  5214. DECLARE @roleName nvarchar(512)
  5215. DECLARE @roleGuid uniqueidentifier
  5216. DECLARE @userName nvarchar(512)
  5217.  
  5218.     Set NoCount On
  5219.     Set @Return = 0
  5220.  
  5221.     Delete From [AzMan_Role_SIDMember] 
  5222.     where MemberSID    = @SidMember and
  5223.           RoleID = @RoleID
  5224.           
  5225.     SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  5226.     If @RowCount <> 1
  5227.     Begin
  5228.         if @Error <> 0 
  5229.         Begin   
  5230.             Set @Return = @Error
  5231.         End
  5232.         else
  5233.         Begin
  5234.             Set @Return = -1168 --Record not found
  5235.         End
  5236.     End
  5237.     
  5238.     -- get the info for auditing
  5239.     IF @SaclIsOn = 1
  5240.         BEGIN
  5241.             SELECT @roleName = Role.Name, @roleGuid = Role.ObjectGuid FROM [dbo].[AzMan_AzRoleAssignment] Role
  5242.                 WHERE Role.ID = @RoleID
  5243.                 
  5244.             -- We can't lookup names from SID, but XP can do that
  5245.             SET @userName = ''
  5246.  
  5247.             -- generate an audit
  5248.             EXEC [AzMan_SP_GenerateMemberAudit]
  5249.                     @Return,
  5250.                     5,  -- 5 for SE_AUDITID_AZ_SQL_MEMBER_REMOVE
  5251.                     6,  -- 6 for role
  5252.                     @roleName,
  5253.                     @roleGuid,
  5254.                     N'',
  5255.                     @SidMember,
  5256.                     1,  -- 1 for member
  5257.                     N'' -- no other info
  5258.         END
  5259.           
  5260. Set NoCount Off
  5261.  
  5262. Return(@Return)
  5263.  
  5264. GO
  5265.  
  5266.  
  5267. Create Procedure [AzMan_SPI_AzRoleAssignment_Multi_SidMembers]
  5268. (
  5269.   @Return [int] output
  5270. , @RoleId [int]             -- ID Of Role Assignment
  5271. , @SidMembers varbinary (4000)
  5272. )
  5273. As
  5274. DECLARE @SaclIsOn [bit]
  5275. Set @SaclIsOn = 0
  5276.  
  5277. Set NoCount On
  5278.  
  5279. -- First parse the SidMembers string
  5280. -- Insert each one of them 
  5281.            
  5282.     Declare @AccessAtObjType [tinyint]           
  5283.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@RoleID, 6, 1, @SaclIsOn output
  5284.     
  5285.     -- Require Admin Access
  5286.     if @Return <> 1 
  5287.     Begin
  5288.         if (@Return >= 2)
  5289.         Begin
  5290.             Set @Return = -5 
  5291.         End
  5292.         goto Done
  5293.     End
  5294. DECLARE @DataLength int
  5295. DECLARE @SidLength int
  5296. DECLARE @Sid varbinary(85)
  5297. DECLARE @Pos int
  5298. DECLARE @isAdd int
  5299. SET @DataLength = DATALENGTH(@SidMembers)
  5300.             
  5301. Set @Return = 0
  5302. Set @Pos = 1
  5303.  
  5304. WHILE @DataLength - @Pos > 8
  5305.     BEGIN
  5306.         SET @isAdd = CAST(SUBSTRING(@SidMembers, @Pos, 1) AS int)
  5307.         SET @Pos = @Pos + 1
  5308.         
  5309.         SET @SidLength = CAST(SUBSTRING(@SidMembers, @Pos, 1) AS int)
  5310.         SET @Pos = @Pos + 1
  5311.         
  5312.         -- make sure that we the SidLength is not lying to us!
  5313.         IF @SidLength >= 12 AND @SidLength < 85 AND @DataLength - @Pos >= @SidLength - 1
  5314.             BEGIN
  5315.                 SET @Sid = CAST(SUBSTRING(@SidMembers, @Pos, @SidLength) as varbinary)
  5316.                 SET @Pos = @Pos + @SidLength        
  5317.  
  5318.                 -- if NNNN=0, then it means to delete
  5319.                 IF @isAdd <> 0
  5320.                     BEGIN
  5321.                         Exec AzMan_SPI_AzRoleAssignment_Single_SidMember @Return output, @RoleID, @Sid, @SaclIsOn
  5322.                         IF @Return <> 0
  5323.                             Break
  5324.                     End    
  5325.                 ELSE
  5326.                     BEGIN
  5327.                         Exec AzMan_SPD_AzRoleAssignment_Single_SidMember @Return output, @RoleID, @Sid, @SaclIsOn
  5328.                         IF @Return <> 0
  5329.                             Break
  5330.                     End
  5331.             END
  5332.         ELSE
  5333.             BEGIN
  5334.                 SET @Pos = @DataLength
  5335.             END
  5336.     END
  5337.  
  5338. Done:
  5339. Set NoCount Off
  5340.  
  5341. Return(@Return)
  5342.  
  5343. GO
  5344.  
  5345.  
  5346. Create Procedure [AzMan_SPI_AzRoleAssignment_Single_AppMember]
  5347. (
  5348.   @Return [int] output,
  5349.   @RoleId [int]             -- ID Of Role Assignment
  5350. , @ChildID [int]
  5351. , @SaclIsOn [bit]
  5352. )
  5353. As
  5354.  
  5355. DECLARE @RowCount INT, @Error INT
  5356. DECLARE @roleName nvarchar(512)
  5357. DECLARE @roleGuid uniqueidentifier
  5358. DECLARE @refGroupName nvarchar(512)
  5359. DECLARE @refGroupGuid uniqueidentifier
  5360.  
  5361. Set @Return = 0
  5362.  
  5363. Set NoCount On
  5364.  
  5365.     INSERT INTO [AzMan_Role_AppMember] 
  5366.         (ChildID, RoleID) 
  5367.     VALUES 
  5368.         (@ChildID, @RoleID)
  5369.         
  5370.     SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  5371.     If @RowCount <> 1
  5372.     Begin
  5373.         if @Error <> 0 
  5374.         Begin   
  5375.             Set @Return = @Error
  5376.         End
  5377.         else
  5378.         Begin
  5379.             Set @Return = -1 
  5380.         End 
  5381.     End
  5382.     -- get info for auditing
  5383.     IF @SaclIsOn = 1
  5384.         BEGIN
  5385.             SELECT @roleName = role.Name, @roleGuid = role.ObjectGuid FROM [dbo].[AzMan_AzRoleAssignment] role
  5386.                 WHERE role.ID = @RoleId
  5387.             SELECT @refGroupName = refGroup.Name, @refGroupGuid = refGroup.ObjectGuid FROM [dbo].[AzMan_AzApplicationGroup] refGroup
  5388.                 WHERE refGroup.ID = @ChildID
  5389.                 
  5390.             -- generate an audit
  5391.             EXEC [AzMan_SP_GenerateObjectAudit]
  5392.                     @Return,
  5393.                     2,  -- 2 for SE_AUDITID_AZ_SQL_REFERENCE_ASSIGN
  5394.                     6,  -- 6 for role
  5395.                     @roleName,
  5396.                     @roleGuid,
  5397.                     5,  -- 5 for application group
  5398.                     @refGroupName,
  5399.                     @refGroupGuid,
  5400.                     N'' -- no other info
  5401.         END 
  5402. Set NoCount Off
  5403.  
  5404. Return(@Return)
  5405.  
  5406. GO
  5407.  
  5408. Create Procedure [AzMan_SPD_AzRoleAssignment_Single_AppMember]
  5409. (
  5410.   @Return [int] output,
  5411.   @RoleId [int]             -- ID Of Role Assignment
  5412. , @ChildID [int]
  5413. , @SaclIsOn [bit]
  5414. )
  5415. As
  5416.  
  5417. DECLARE @RowCount INT, @Error INT
  5418. DECLARE @roleName nvarchar(512)
  5419. DECLARE @roleGuid uniqueidentifier
  5420. DECLARE @refGroupName nvarchar(512)
  5421. DECLARE @refGroupGuid uniqueidentifier
  5422. Set @Return = 0
  5423.  
  5424. Set NoCount On
  5425.  
  5426.     Delete From [AzMan_Role_AppMember] 
  5427.     where ChildID    = @ChildID and
  5428.           RoleID = @RoleID
  5429.           
  5430.     SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  5431.     If @RowCount <> 1
  5432.     Begin
  5433.         if @Error <> 0 
  5434.         Begin   
  5435.             Set @Return = @Error
  5436.         End
  5437.         else
  5438.         Begin
  5439.             Set @Return = -1168 --Record not found
  5440.         End 
  5441.     End
  5442.     -- get info for auditing
  5443.     IF @SaclIsOn = 1
  5444.         BEGIN
  5445.             SELECT @roleName = role.Name, @roleGuid = role.ObjectGuid FROM [dbo].[AzMan_AzRoleAssignment] role
  5446.                 WHERE role.ID = @RoleId
  5447.             SELECT @refGroupName = refGroup.Name, @refGroupGuid = refGroup.ObjectGuid FROM [dbo].[AzMan_AzApplicationGroup] refGroup
  5448.                 WHERE refGroup.ID = @ChildID
  5449.                 
  5450.             -- generate an audit
  5451.             EXEC [AzMan_SP_GenerateObjectAudit]
  5452.                     @Return,
  5453.                     3,  -- 3 for SE_AUDITID_AZ_SQL_REFERENCE_REMOVE
  5454.                     6,  -- 6 for role
  5455.                     @roleName,
  5456.                     @roleGuid,
  5457.                     5,  -- 5 for application group
  5458.                     @refGroupName,
  5459.                     @refGroupGuid,
  5460.                     N'' -- no other info
  5461.         END
  5462.         
  5463. Set NoCount Off
  5464.  
  5465. Return(@Return)
  5466.  
  5467. GO
  5468.  
  5469.  
  5470. Create Procedure [AzMan_SPI_AzRoleAssignment_Multi_AppMembers]
  5471. (
  5472.   @Return [int] output
  5473. , @RoleId [int]             -- ID Of Role Assignment
  5474. , @SepChar [char] (1) = "|"
  5475. , @AppMemberIDs [nvarchar] (4000)
  5476. )
  5477. As
  5478.  
  5479.     Declare @AccessAtObjType [tinyint]
  5480.     DECLARE @SaclIsOn [bit]
  5481.     Set @SaclIsOn = 0
  5482.  
  5483.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@RoleID, 6, 1, @SaclIsOn output
  5484.     
  5485.     -- Require Admin Access
  5486.     if @Return <> 1 
  5487.     Begin
  5488.         if (@Return >= 2)
  5489.         Begin
  5490.             Set @Return = -5 
  5491.         End
  5492.         goto Done
  5493.     End
  5494.  
  5495.  
  5496. Set @Return = 0
  5497. DECLARE @equal char
  5498. DECLARE @addOrDelete nvarchar(10)
  5499. DECLARE @isAdd int
  5500. SET @equal = '='
  5501.  
  5502. Set NoCount On
  5503.  
  5504. -- First parse the SidMembers string
  5505. -- Insert each one of them 
  5506.  
  5507. DECLARE @AppMember varchar(100), @Pos int
  5508. DECLARE @iAppMemberID int
  5509.  
  5510.  
  5511.     SET @AppMemberIDs = LTRIM(RTRIM(@AppMemberIDs))+ @SepChar
  5512.     
  5513.     SET @Pos = CHARINDEX(@equal, @AppMemberIDs, 1)
  5514.  
  5515.     IF REPLACE(@AppMemberIDs, @SepChar, '') <> ''
  5516.     BEGIN
  5517.         WHILE @Pos > 0
  5518.         BEGIN
  5519.             SET @AppMember = LTRIM(RTRIM(LEFT(@AppMemberIDs, @Pos - 1)))
  5520.             Set @iAppMemberID = CAST(@AppMember as int)
  5521.             
  5522.             -- remove the left part (the id)
  5523.             SET @AppMemberIDs = RIGHT(@AppMemberIDs, LEN(@AppMemberIDs) - @Pos)
  5524.             
  5525.             -- now move to the pipe separator
  5526.             SET @Pos = CHARINDEX(@SepChar, @AppMemberIDs, 1)
  5527.             SET @addOrDelete = LTRIM(RTRIM(LEFT(@AppMemberIDs, @Pos - 1)))
  5528.             
  5529.             Set @isAdd = CAST(@addOrDelete as int)
  5530.             
  5531.             IF @iAppMemberID > 0
  5532.             BEGIN
  5533.                 IF @isAdd <> 0
  5534.                 BEGIN
  5535.                     Exec AzMan_SPI_AzRoleAssignment_Single_AppMember @Return output, @RoleID, @iAppMemberID, @SaclIsOn
  5536.                     if @Return <> 0
  5537.                     Begin
  5538.                         Break
  5539.                     End
  5540.                 End
  5541.                 ELSE
  5542.                 BEGIN
  5543.                     Exec AzMan_SPD_AzRoleAssignment_Single_AppMember @Return output, @RoleID, @iAppMemberID, @SaclIsOn 
  5544.                     if @Return <> 0
  5545.                     Begin
  5546.                         Break
  5547.                     End
  5548.                 End
  5549.             END
  5550.             SET @AppMemberIDs = RIGHT(@AppMemberIDs, LEN(@AppMemberIDs) - @Pos)
  5551.             SET @Pos = CHARINDEX(@equal, @AppMemberIDs, 1)
  5552.         END
  5553.     END 
  5554.  
  5555. Done:
  5556. Set NoCount Off
  5557.  
  5558. Return(@Return)
  5559.  
  5560. GO
  5561.  
  5562.  
  5563. Create Procedure [spDrop_AzMan_Table]
  5564. as
  5565.     drop table [AzMan_Role_To_Operation_Link]
  5566.     drop table [AzMan_Role_To_Task_Link]
  5567.     drop table [AzMan_Task_To_Task_Link]
  5568.     drop table [AzMan_Task_To_Operation_Link]
  5569.     drop table [AzMan_AzTask]
  5570.     drop table [AzMan_AzOperation]
  5571.     drop table [AzMan_LDAPQuery]
  5572.     drop table [AzMan_BizRule]
  5573.     drop table [AzMan_Group_SIDMember]
  5574.     drop table [AzMan_Group_AppMember]
  5575.     drop table [AzMan_AzApplicationGroup]
  5576.     drop table [AzMan_Role_SIDMember]
  5577.     drop table [AzMan_Role_AppMember]
  5578.     drop table [AzMan_AzRoleAssignment]
  5579.     drop table [AzMan_AzScope_Name] 
  5580.     drop table [AzMan_AzScope]
  5581.     drop table [AzMan_AzApplication]
  5582.     drop table [AzMan_AzAuthorizationStore]
  5583. Return(0)
  5584. GO 
  5585.  
  5586. ----------------------------Select queries----------------------------------------------
  5587.  
  5588.  
  5589. Create Procedure [AzMan_SPS_Get_AzAuthorizationStoreByName]
  5590. -- Retrieve specific records from the [AzMan_AzAuthorizationStore] table depending on the input parameters you supply.
  5591. (
  5592.     @Return [int] output,
  5593.     @Name [nvarchar] (512)
  5594. )
  5595. as 
  5596. Begin
  5597.     DECLARE @RowCount INT, @Error INT
  5598.     DEclare @ID INT
  5599.  
  5600.     select @ID=ID from [AzMan_AzAuthorizationStore] where name = @Name
  5601.  
  5602.     SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  5603.  
  5604.     if @Error <> 0 
  5605.     Begin
  5606.         Set @Return = @Error
  5607.     End 
  5608.     else
  5609.     Begin 
  5610.         If @RowCount = 0
  5611.         Begin
  5612.             Set @Return = -1168 --Record not found
  5613.         End
  5614.     End     
  5615.  
  5616.     Declare @AccessAtObjType [tinyint]
  5617.     
  5618.     DECLARE @SaclIsOn [bit]
  5619.     Set @SaclIsOn = 0
  5620.     -- we don't care about SACL (0 for the second last parameter)
  5621.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 0, 0, @SaclIsOn output
  5622.  
  5623.     if @Return >= 1 
  5624.     Begin
  5625.             
  5626.         Select
  5627.              [ID]
  5628.             ,[DomainTimeout]
  5629.             ,[ScriptEngineTimeout]
  5630.             ,[MaxScriptEngines]
  5631.             ,[ApplyStoreSacl]
  5632.             ,[GenerateAudits]
  5633.             ,[MajorVersion]
  5634.             ,[MinorVersion]
  5635.             ,[ObjectGuid]            
  5636.             ,[TargetMachine]            
  5637.             ,[Description]
  5638.             ,[ApplicationData]
  5639.             --,[ChildUpdateTimeStamp]
  5640.         From [AzMan_AzAuthorizationStore]
  5641.         where Name = @Name 
  5642.         
  5643.         SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  5644.  
  5645.         if @Error <> 0 
  5646.         Begin
  5647.             Set @Return = @Error
  5648.         End 
  5649.         else
  5650.         Begin 
  5651.             If @RowCount = 0
  5652.             Begin
  5653.                 Set @Return = -1168 --Record not found
  5654.             End
  5655.         End     
  5656.         
  5657.     End     
  5658. End
  5659.  
  5660. Return(@Return)
  5661.  
  5662. GO
  5663.  
  5664. Create Procedure [AzMan_SPS_Enum_AzApplications]
  5665. (
  5666.      @Return [int] output,
  5667.      @StoreID int
  5668. )
  5669. as 
  5670. Begin
  5671.  
  5672.     DECLARE @RowCount INT, @Error INT
  5673.     Declare @AccessAtObjType [tinyint]
  5674.     
  5675.     DECLARE @SaclIsOn [bit]
  5676.     Set @SaclIsOn = 0
  5677.     -- we don't care about SACL (0 for the second last parameter)
  5678.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@StoreID, 0, 0, @SaclIsOn output
  5679.     
  5680.     if @Return <= 0
  5681.         goto Done
  5682.     Else if @Return = 1 or @Return = 2
  5683.     Begin
  5684.         Select
  5685.         [ID], 
  5686.         [ObjectGuid] ,
  5687.         IsNull([ApplyStoreSacl], 0),
  5688.         IsNull([GenerateAudits], 0), 
  5689.         IsNull([AuthzInterfaceClsId], 0), 
  5690.         IsNull([ApplicationVersion], N''),
  5691.         [Name],
  5692.         IsNull([Description], N''),                
  5693.         [ApplicationData]
  5694.         --[ChildUpdateTimeStamp] 
  5695.         From [AzMan_AzApplication]
  5696.         where StoreID = @StoreID  
  5697.  
  5698.         SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  5699.         if @Error <> 0 
  5700.         Begin
  5701.             Set @Return = @Error
  5702.         End
  5703.         else
  5704.         Begin
  5705.             Set @Return = 0
  5706.         End
  5707.         
  5708.     End
  5709.     Else if @Return = 3 -- Delegated user
  5710.     Begin
  5711.  
  5712.         -- Get all the child app where the current user has access
  5713.         Select
  5714.             [ID], 
  5715.             [ObjectGuid] ,
  5716.             [ApplyStoreSacl],
  5717.             [GenerateAudits], 
  5718.             [AuthzInterfaceClsId], 
  5719.             [ApplicationVersion],
  5720.             [Name],            
  5721.             [Description],
  5722.             [ApplicationData]
  5723.             --[ChildUpdateTimeStamp] 
  5724.         From [AzMan_AzApplication]
  5725.         where StoreID = @StoreID  and
  5726.             ID in ( 
  5727.                 select ObjectID from [dbo].[Azman_SQLRole]
  5728.                 where [dbo].[Azman_SQLRole].[ObjectType] = 1 and 
  5729.                         is_member([dbo].[Azman_SQLRole].[SQLRoleName]) = 1 ) 
  5730.     
  5731.     
  5732.         SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  5733.         if @Error <> 0 
  5734.         Begin
  5735.             Set @Return = @Error
  5736.         End
  5737.         else
  5738.         Begin
  5739.             Set @Return = 0
  5740.         End
  5741.     
  5742.     End 
  5743.         
  5744. End
  5745.  
  5746. Done:
  5747. Return(@Return)
  5748.  
  5749. GO
  5750.  
  5751. Create Procedure [AzMan_SPS_Get_AzApplication]
  5752. (
  5753.      @Return [int] output,
  5754.      @ID int
  5755. )
  5756. as 
  5757. Begin
  5758.     DECLARE @RowCount INT, @Error INT
  5759.     Declare @AccessAtObjType [tinyint]
  5760.     
  5761.     DECLARE @SaclIsOn [bit]
  5762.     Set @SaclIsOn = 0
  5763.     -- we don't care about SACL (0 for the second last parameter)
  5764.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 1, 0, @SaclIsOn output
  5765.  
  5766.     if @Return = 1 or @Return = 2 or @Return = 3
  5767.     Begin
  5768.  
  5769.         Select
  5770.             [StoreId],
  5771.             [ApplyStoreSacl],
  5772.             [GenerateAudits], 
  5773.             [AuthzInterfaceClsId], 
  5774.             [ObjectGuid],
  5775.             [ApplicationVersion],
  5776.             [Name],
  5777.             [Description],
  5778.             [ApplicationData]
  5779.         From [AzMan_AzApplication]
  5780.         where ID = @ID 
  5781.         
  5782.         SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  5783.  
  5784.         if @Error <> 0 
  5785.         Begin
  5786.             Set @Return = @Error
  5787.         End 
  5788.         else
  5789.         Begin 
  5790.             If @RowCount = 0
  5791.             Begin
  5792.                 Set @Return = -1168 --Record not found
  5793.             End
  5794.         End     
  5795.     End     
  5796.         
  5797. End
  5798.  
  5799. Return(@Return)
  5800.  
  5801. GO
  5802.  
  5803.  
  5804. Create Procedure [AzMan_SPS_Enum_AzScope]
  5805. (
  5806.      @Return [int] output,
  5807.      @AppID int
  5808. )
  5809. as 
  5810. Begin
  5811.  
  5812.     DECLARE @RowCount INT, @Error INT
  5813.     Declare @AccessAtObjType [tinyint]
  5814.     
  5815.     DECLARE @SaclIsOn [bit]
  5816.     Set @SaclIsOn = 0
  5817.     -- we don't care about SACL (0 for the second last parameter)
  5818.     -- Check access at the App level
  5819.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@AppID, 1, 0, @SaclIsOn output
  5820.     
  5821.     if @Return <= 0
  5822.         goto Done
  5823.     Else if @Return = 1 or @Return = 2
  5824.     Begin
  5825.         Select
  5826.             [ID], 
  5827.             [NameLen],
  5828.             IsNull([HasSpecificUsers], 0) AS HasSpecificUsers,
  5829.             [NameHash],
  5830.             [ObjectGuid] ,
  5831.             [Description],
  5832.             [Name],
  5833.             [ApplicationData]
  5834.         From [AzMan_AzScope]
  5835.         where AppID = @AppID  
  5836.         
  5837.         SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  5838.         if @Error <> 0 
  5839.         Begin
  5840.             Set @Return = @Error
  5841.         End
  5842.         else
  5843.         Begin
  5844.             Set @Return = 0
  5845.         End
  5846.     end
  5847.     Else if @Return = 3 -- Delegated user
  5848.     Begin
  5849.     
  5850.         Select
  5851.             [ID], 
  5852.             [NameLen],
  5853.             IsNull([HasSpecificUsers], 0) AS HasSpecificUsers,
  5854.             [NameHash],
  5855.             [ObjectGuid] ,
  5856.             [Description],
  5857.             [Name],            
  5858.             [ApplicationData]
  5859.         From [AzMan_AzScope]
  5860.         where AppID = @AppID  and 
  5861.             ID in ( 
  5862.                 select ObjectID from [dbo].[Azman_SQLRole]
  5863.                 where [dbo].[Azman_SQLRole].[ObjectType] = 4 and 
  5864.                         is_member([dbo].[Azman_SQLRole].[SQLRoleName]) = 1 ) 
  5865.     
  5866.         SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  5867.         if @Error <> 0 
  5868.         Begin
  5869.             Set @Return = @Error
  5870.         End
  5871.         else
  5872.         Begin
  5873.             Set @Return = 0
  5874.         End
  5875.     End
  5876.     
  5877. End
  5878.  
  5879. Done:
  5880. Return(@Return)
  5881.  
  5882. GO
  5883.  
  5884. Create Procedure [AzMan_SPS_Enum_AzApplicationGroup]
  5885. (
  5886.      @Return   int output,
  5887.      @ParentID int
  5888.     ,@ParentType tinyint
  5889. )
  5890. as 
  5891. Begin
  5892.  
  5893.     DECLARE @RowCount INT, @Error INT
  5894.     Declare @AccessAtObjType [tinyint]
  5895.     
  5896.     DECLARE @SaclIsOn [bit]
  5897.     Set @SaclIsOn = 0
  5898.     -- we don't care about SACL (0 for the second last parameter)
  5899.     -- Check access at the parent
  5900.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ParentID, @ParentType, 0, @SaclIsOn output
  5901.     
  5902.     if @Return <= 0
  5903.         goto Done
  5904.     -- The user either has admin, reader or delegated uset at the parent
  5905.     -- So he can see the groups
  5906.     Else if @Return = 1 or @Return = 2 or @Return = 3
  5907.     Begin
  5908.     
  5909.         if @ParentType = 0
  5910.         Begin
  5911.             Select
  5912.                 [ID], 
  5913.                 [GroupType]  ,
  5914.                 [ObjectGuid] ,
  5915.                 [Name]       ,
  5916.  
  5917.                 ISNULL ( [Description] , N'' ) 
  5918.             From [AzMan_AzApplicationGroup] 
  5919.             where (StoreID = @ParentID  ) and ParentType = @ParentType
  5920.  
  5921.         End
  5922.         else if @ParentType = 1
  5923.         Begin
  5924.             Select
  5925.                 [ID], 
  5926.                 [GroupType], 
  5927.                 [ObjectGuid],
  5928.                 [Name],
  5929.                 ISNULL ( [Description] , N'' ) 
  5930.             From [AzMan_AzApplicationGroup] 
  5931.             where (AppID = @ParentID  ) and ParentType = @ParentType
  5932.  
  5933.         End         
  5934.         else if @ParentType = 4
  5935.         Begin
  5936.             Select
  5937.                 [ID], 
  5938.                 [GroupType],
  5939.                 [ObjectGuid],
  5940.                 [Name],
  5941.                 ISNULL ( [Description] , N'' ) 
  5942.             From [AzMan_AzApplicationGroup] 
  5943.             where (ScopeID = @ParentID  ) and ParentType = @ParentType
  5944.         End         
  5945.         
  5946.         SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  5947.         if @Error <> 0 
  5948.         Begin
  5949.             Set @Return = @Error
  5950.         End
  5951.         else
  5952.         Begin
  5953.             Set @Return = 0
  5954.         End
  5955.         
  5956.     End     
  5957.  
  5958. End
  5959.  
  5960. Done:
  5961. Return(@Return)
  5962.  
  5963. GO
  5964.  
  5965. Create Procedure [AzMan_SPS_Enum_AzTask]
  5966. (
  5967.      @Return   int output,  
  5968.      @ParentID int
  5969.     ,@ParentType tinyint
  5970. )
  5971. as 
  5972. Begin
  5973.  
  5974.     DECLARE @RowCount INT, @Error INT
  5975.     Declare @AccessAtObjType [tinyint]
  5976.     
  5977.     DECLARE @SaclIsOn [bit]
  5978.     Set @SaclIsOn = 0
  5979.     -- we don't care about SACL (0 for the second last parameter)
  5980.     -- Check access at the parent
  5981.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ParentID, @ParentType, 0, @SaclIsOn output
  5982.     
  5983.     if @Return <= 0
  5984.         goto Done
  5985.     -- The user either has admin, reader or delegated uset at the parent
  5986.     -- So he can see the Task
  5987.     Else if @Return = 1 or @Return = 2 or @Return = 3
  5988.     Begin
  5989.  
  5990.         if @ParentType = 1
  5991.         Begin
  5992.             Select
  5993.                 [ID], 
  5994.                 [IsRoleDefinition],                
  5995.                 [ObjectGuid] ,
  5996.                 [Name]       ,
  5997.                 [Description],
  5998.                 [ApplicationData]
  5999.             From [AzMan_AzTask] 
  6000.             where AppID = @ParentID  
  6001.         End else if @ParentType = 4
  6002.         Begin
  6003.             Select
  6004.                 [ID], 
  6005.                 [IsRoleDefinition],                
  6006.                 [ObjectGuid] ,
  6007.                 [Name]       ,
  6008.                 [Description],
  6009.                 [ApplicationData]
  6010.             From [AzMan_AzTask] 
  6011.             where ScopeID = @ParentID  
  6012.         End else 
  6013.         Begin
  6014.             Set @Return = -1
  6015.             goto Done
  6016.         End
  6017.         
  6018.         SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  6019.         if @Error <> 0 
  6020.         Begin
  6021.             Set @Return = @Error
  6022.         End
  6023.         else
  6024.         Begin
  6025.             Set @Return = 0
  6026.         End
  6027.         
  6028.     End     
  6029. End
  6030.  
  6031. Done:
  6032. Return(@Return)
  6033.  
  6034. GO
  6035.  
  6036. Create Procedure [AzMan_SPS_Enum_AzTask_Operations]
  6037. (
  6038.      @Return   int output,
  6039.      @TaskID int
  6040. )
  6041. as 
  6042. Begin
  6043.  
  6044.     DECLARE @RowCount INT, @Error INT
  6045.     Declare @AccessAtObjType [tinyint]
  6046.     
  6047.     DECLARE @SaclIsOn [bit]
  6048.     Set @SaclIsOn = 0
  6049.     -- we don't care about SACL (0 for the second last parameter)
  6050.     -- Check access at the Task
  6051.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@TaskID, 3, 0, @SaclIsOn output
  6052.     
  6053.     if @Return <= 0
  6054.         goto Done
  6055.     
  6056.     -- The user either has admin, reader or delegated user at the parent
  6057.     -- So he can see the task
  6058.     Else if @Return = 1 or @Return = 2 or @Return = 3
  6059.     Begin
  6060.         Select
  6061.             [ObjectGuid]
  6062.         From [AzMan_Task_To_Operation_Link] INNER JOIN AzMan_AzOperation ON [AzMan_Task_To_Operation_Link].[OperationID] = AzMan_AzOperation.ID
  6063.         where TaskID = @TaskID  
  6064.         
  6065.         SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  6066.         if @Error <> 0 
  6067.         Begin
  6068.             Set @Return = @Error
  6069.         End
  6070.         else
  6071.         Begin
  6072.             Set @Return = 0
  6073.         End
  6074.         
  6075.     End     
  6076. End
  6077.  
  6078. Done:
  6079. Return(@Return)
  6080.  
  6081. GO
  6082.  
  6083. Create Procedure [AzMan_SPS_Enum_AzTask_Tasks]
  6084. (
  6085.      @Return   int output,
  6086.      @TaskID int
  6087. )
  6088. as 
  6089. Begin
  6090.     DECLARE @RowCount INT, @Error INT
  6091.     Declare @AccessAtObjType [tinyint]
  6092.     
  6093.     DECLARE @SaclIsOn [bit]
  6094.     Set @SaclIsOn = 0
  6095.     -- we don't care about SACL (0 for the second last parameter)
  6096.     -- Check access at the Task
  6097.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@TaskID, 3, 0, @SaclIsOn output
  6098.     
  6099.     if @Return <= 0
  6100.         goto Done
  6101.     
  6102.     -- The user either has admin, reader or delegated user at the parent
  6103.     -- So he can see the task
  6104.     Else if @Return = 1 or @Return = 2 or @Return = 3
  6105.     Begin
  6106.  
  6107.         Select
  6108.             [ObjectGuid]
  6109.         From [AzMan_Task_To_Task_Link] INNER JOIN AzMan_AzTask ON [AzMan_Task_To_Task_Link].[ChildID] = AzMan_AzTask.ID
  6110.         where [AzMan_Task_To_Task_Link].[TaskID] = @TaskID  
  6111.         
  6112.         SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  6113.         if @Error <> 0 
  6114.         Begin
  6115.             Set @Return = @Error
  6116.         End
  6117.         else
  6118.         Begin
  6119.             Set @Return = 0
  6120.         End
  6121.         
  6122.     End     
  6123. End
  6124.  
  6125. Done:
  6126. Return(@Return)
  6127.  
  6128. GO
  6129.  
  6130.  
  6131. Create Procedure [AzMan_SPS_Enum_AzRoleAssignment_Tasks]
  6132. (
  6133.      @Return   int output,
  6134.      @RoleID int
  6135. )
  6136. as 
  6137. Begin
  6138.  
  6139.     DECLARE @RowCount INT, @Error INT
  6140.     Declare @AccessAtObjType [tinyint]
  6141.     
  6142.     DECLARE @SaclIsOn [bit]
  6143.     Set @SaclIsOn = 0
  6144.     -- we don't care about SACL (0 for the second last parameter)
  6145.     -- Check access at the Role 
  6146.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@RoleID, 6, 0, @SaclIsOn output
  6147.     
  6148.     if @Return <= 0
  6149.     Begin
  6150.         goto Done
  6151.     End
  6152.     
  6153.     -- The user either has admin, reader or delegated uset at the parent
  6154.     -- So he can see the Role
  6155.     Else if @Return = 1 or @Return = 2 or @Return = 3
  6156.     Begin
  6157.  
  6158.         Select
  6159.         [ObjectGuid]
  6160.         From [AzMan_Role_To_Task_Link] INNER JOIN AzMan_AzTask ON [TaskID] = AzMan_AzTask.ID
  6161.         where [RoleID]  = @RoleID  
  6162.         
  6163.         SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  6164.         if @Error <> 0 
  6165.         Begin
  6166.             Set @Return = @Error
  6167.         End
  6168.         else
  6169.         Begin
  6170.             Set @Return = 0
  6171.         End
  6172.         
  6173.     End     
  6174.  
  6175. End
  6176.  
  6177. Done:
  6178. Return (@Return)
  6179.  
  6180. GO
  6181.  
  6182. Create Procedure [AzMan_SPS_Enum_AzRoleAssignment_Operations]
  6183. (
  6184.      @Return   int output,
  6185.      @RoleID int
  6186. )
  6187. as 
  6188. Begin
  6189.  
  6190.     DECLARE @RowCount INT, @Error INT
  6191.     Declare @AccessAtObjType [tinyint]
  6192.     
  6193.     DECLARE @SaclIsOn [bit]
  6194.     Set @SaclIsOn = 0
  6195.     -- we don't care about SACL (0 for the second last parameter)
  6196.     -- Check access at the Role 
  6197.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@RoleID, 6, 0, @SaclIsOn output
  6198.     
  6199.     if @Return <= 0
  6200.     Begin
  6201.         goto Done
  6202.     End
  6203.     
  6204.     -- The user either has admin, reader or delegated user at the parent
  6205.     -- So he can see the role
  6206.     Else if @Return = 1 or @Return = 2 or @Return = 3
  6207.     Begin
  6208.         Select
  6209.             [ObjectGuid]
  6210.         From [AzMan_Role_To_Operation_Link] 
  6211.         INNER JOIN AzMan_AzOperation ON [AzMan_Role_To_Operation_Link].OperationID = AzMan_AzOperation.ID
  6212.         where [RoleID]  = @RoleID  
  6213.         
  6214.         SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  6215.         if @Error <> 0 
  6216.         Begin
  6217.             Set @Return = @Error
  6218.         End
  6219.         else
  6220.         Begin
  6221.             Set @Return = 0
  6222.         End
  6223.         
  6224.     End     
  6225. End
  6226.  
  6227. Done:
  6228. Return(@Return)
  6229.  
  6230.  
  6231. GO
  6232.  
  6233. Create Procedure [AzMan_SPS_Enum_AzRoleAssignment]
  6234. (
  6235.      @Return   int output,
  6236.      @ParentID int
  6237.     ,@ParentType tinyint
  6238. )
  6239. as 
  6240. Begin
  6241.     DECLARE @RowCount INT, @Error INT
  6242.     Declare @AccessAtObjType [tinyint]
  6243.     
  6244.     DECLARE @SaclIsOn [bit]
  6245.     Set @SaclIsOn = 0
  6246.     -- we don't care about SACL (0 for the second last parameter)
  6247.     -- Check access at the parent
  6248.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ParentID, @ParentType, 0, @SaclIsOn output
  6249.     
  6250.     if @Return <= 0
  6251.     Begin
  6252.         goto Done
  6253.     End
  6254.     
  6255.     Else if @Return = 1 or @Return = 2 or @Return = 3
  6256.     Begin
  6257.         if @ParentType = 1
  6258.         Begin
  6259.             Select
  6260.                 [ID], 
  6261.                 [ObjectGuid] ,
  6262.                 [Name],
  6263.                 [Description],
  6264.                 [ApplicationData]
  6265.             From [AzMan_AzRoleAssignment] 
  6266.             where AppID = @ParentID  and ParentType = @ParentType
  6267.         End
  6268.         else if @ParentType = 4
  6269.         Begin
  6270.             Select
  6271.                 [ID], 
  6272.                 [ObjectGuid] ,
  6273.                 [Name],
  6274.                 [Description],
  6275.                 [ApplicationData]
  6276.             From [AzMan_AzRoleAssignment] 
  6277.             where ScopeID = @ParentID  and ParentType = @ParentType
  6278.         End 
  6279.         else
  6280.         Begin
  6281.             Set @Return = -1
  6282.             goto Done
  6283.         End
  6284.                 
  6285.         SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  6286.         if @Error <> 0 
  6287.         Begin
  6288.             Set @Return = @Error
  6289.         End
  6290.         else
  6291.         Begin
  6292.             Set @Return = 0
  6293.         End
  6294.     End     
  6295.     
  6296. End
  6297.  
  6298. Done:
  6299. Return(@Return)
  6300.  
  6301. GO
  6302.  
  6303. Create Procedure AzMan_SPS_Get_AzApplicationGroup
  6304. (
  6305.      @Return   int output,
  6306.      @ID int
  6307. )
  6308. as 
  6309.     DECLARE @RowCount INT, @Error INT
  6310.     Declare @AccessAtObjType [tinyint]
  6311.     
  6312.     DECLARE @SaclIsOn [bit]
  6313.     Set @SaclIsOn = 0
  6314.     -- we don't care about SACL (0 for the second last parameter)
  6315.     -- Check access at this object
  6316.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 5, 0, @SaclIsOn output
  6317.     
  6318.     if @Return <= 0
  6319.         Begin
  6320.             goto Done
  6321.         End
  6322.     Else if @Return = 1 or @Return = 2 or @Return = 3
  6323.         BEGIN
  6324.             Begin
  6325.                 Select
  6326.                     [GroupType],
  6327.                     [ObjectGuid] ,
  6328.                     [Name],
  6329.                     IsNull([Description], N'')
  6330.                 From [AzMan_AzApplicationGroup] 
  6331.                 where [ID] = @ID
  6332.  
  6333.             End 
  6334.                 
  6335.             SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  6336.             if @Error <> 0 
  6337.                 Set @Return = @Error
  6338.             else
  6339.                 Set @Return = 0
  6340.         END
  6341.  
  6342. Done:
  6343.     Return(@Return)
  6344.  
  6345. GO
  6346.  
  6347. Create Procedure [AzMan_SPS_Get_AzApplicationGroup_BizruleInfo]
  6348. (
  6349.      @Return   int output,
  6350.      @ID int
  6351. )
  6352. as 
  6353. Begin
  6354.  
  6355.     DECLARE @RowCount INT, @Error INT
  6356.     Declare @AccessAtObjType [tinyint]
  6357.     
  6358.     DECLARE @SaclIsOn [bit]
  6359.     Set @SaclIsOn = 0
  6360.     -- we don't care about SACL (0 for the second last parameter)
  6361.     -- Check access at this object
  6362.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 5, 0, @SaclIsOn output
  6363.     
  6364.     if @Return <= 0
  6365.     Begin
  6366.         goto Done
  6367.     End
  6368.     -- The user either has admin, reader or delegated user at the parent
  6369.     -- So he can see this object 
  6370.     Else if @Return = 1 or @Return = 2 or @Return = 3
  6371.     Begin
  6372.         Select 
  6373.             [BizRuleLanguage],
  6374.             [BizRuleImportedPath] ,
  6375.             [BizRule]
  6376.         From 
  6377.             [AzMan_BizRule]
  6378.         where ParentID = @ID  and  ParentType = 5 and ID in 
  6379.          ( Select [BizruleID] From [AzMan_BizRule_To_Group] where [GroupID] = @ID)
  6380.            
  6381.         SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  6382.  
  6383.         if @Error <> 0 
  6384.         Begin
  6385.             Set @Return = @Error
  6386.         End 
  6387.         else
  6388.         Begin 
  6389.             If @RowCount = 0
  6390.             Begin
  6391.                 Set @Return = -1168 --Record not found
  6392.             End
  6393.         End     
  6394.     End     
  6395. End
  6396.  
  6397. Done:
  6398. Return(@Return)
  6399.  
  6400. GO
  6401.  
  6402. Create Procedure [AzMan_SPS_Get_AzTask_BizruleInfo]
  6403. (
  6404.      @Return   int output,
  6405.      @ID int
  6406. )
  6407. as 
  6408. Begin
  6409.     DECLARE @RowCount INT, @Error INT
  6410.     Declare @AccessAtObjType [tinyint]
  6411.     
  6412.     DECLARE @SaclIsOn [bit]
  6413.     Set @SaclIsOn = 0
  6414.     -- we don't care about SACL (0 for the second last parameter)
  6415.     -- Check access at this object
  6416.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 3, 0, @SaclIsOn output
  6417.     
  6418.     if @Return <= 0
  6419.     Begin
  6420.         goto Done
  6421.     End
  6422.     -- The user either has admin, reader or delegated user at the parent
  6423.     -- So he can see this object 
  6424.     Else if @Return = 1 or @Return = 2 or @Return = 3
  6425.     Begin
  6426.  
  6427.         Set @Return = 0
  6428.  
  6429.         Select 
  6430.             [BizRuleLanguage],         
  6431.             [BizRuleImportedPath] ,
  6432.             [BizRule]
  6433.         From 
  6434.             [AzMan_BizRule]
  6435.         where ParentID = @ID  and  ParentType = 3 and ID in 
  6436.          ( Select [BizruleID] From [AzMan_BizRule_To_Task] where [TaskID] = @ID)
  6437.            
  6438.         SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  6439.  
  6440.         if @Error <> 0 
  6441.         Begin
  6442.             Set @Return = @Error
  6443.         End 
  6444.         else
  6445.         Begin 
  6446.             If @RowCount = 0
  6447.  
  6448.             Begin
  6449.                 Set @Return = -1168 --Record not found
  6450.             End
  6451.         End     
  6452.     End     
  6453. End
  6454.  
  6455. Done:
  6456. Return(@Return)
  6457.  
  6458. GO
  6459.  
  6460.  
  6461. Create Procedure [AzMan_SPS_Get_AzApplicationGroup_LDAPQuery]
  6462. (
  6463.      @Return   int output,
  6464.      @GroupID int
  6465. )
  6466. as 
  6467. Begin
  6468.     DECLARE @RowCount INT, @Error INT
  6469.     Declare @AccessAtObjType [tinyint]
  6470.     
  6471.     DECLARE @SaclIsOn [bit]
  6472.     Set @SaclIsOn = 0
  6473.     -- we don't care about SACL (0 for the second last parameter)
  6474.     -- Check access at this object
  6475.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@GroupID, 5, 0, @SaclIsOn output
  6476.     
  6477.     if @Return <= 0
  6478.     Begin
  6479.         goto Done
  6480.     End
  6481.     -- The user either has admin, reader or delegated user at the parent
  6482.     -- So he can see this object 
  6483.     Else if @Return = 1 or @Return = 2 or @Return = 3
  6484.     Begin
  6485.  
  6486.         Set @Return = 0
  6487.         Select 
  6488.             [LdapQuery]
  6489.         From 
  6490.             [AzMan_LDAPQuery]
  6491.         where GroupID = @GroupID   and ID  in 
  6492.             ( Select [LdapQueryID] From [AzMan_AzApplicationGroup] where ID = @GroupID  )
  6493.                 
  6494.         SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  6495.  
  6496.         if @Error <> 0 
  6497.         Begin
  6498.             Set @Return = @Error
  6499.         End 
  6500.         else
  6501.         Begin 
  6502.             If @RowCount = 0
  6503.  
  6504.             Begin
  6505.                 Set @Return = -1168 --Record not found
  6506.             End
  6507.         End     
  6508.     End     
  6509. End
  6510.  
  6511. Done:
  6512. Return(@Return)
  6513.  
  6514. GO
  6515.  
  6516. Create Procedure [AzMan_SPS_Enum_AzApplicationGroup_SIDMembers]
  6517. (
  6518.      @Return   int output,
  6519.      @GroupID int
  6520. )
  6521. as 
  6522. Begin
  6523.     DECLARE @RowCount INT, @Error INT
  6524.     Declare @AccessAtObjType [tinyint]
  6525.     
  6526.     DECLARE @SaclIsOn [bit]
  6527.     Set @SaclIsOn = 0
  6528.     -- we don't care about SACL (0 for the second last parameter)
  6529.     -- Check access at this object
  6530.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@GroupID, 5, 0, @SaclIsOn output
  6531.     
  6532.     if @Return <= 0
  6533.     Begin
  6534.         goto Done
  6535.     End
  6536.     -- The user either has admin, reader or delegated user at the Group
  6537.     -- So he can see this object 
  6538.     Else if @Return = 1 or @Return = 2 or @Return = 3
  6539.     Begin
  6540.         
  6541.         Select [MemberSID]
  6542.         From [AzMan_Group_SIDMember]
  6543.         where GroupID = @GroupID  and [Member] = 1
  6544.         
  6545.             SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  6546.             if @Error <> 0 
  6547.             Begin
  6548.                 Set @Return = @Error
  6549.             End
  6550.             else
  6551.             Begin
  6552.                 Set @Return = 0
  6553.             End
  6554.         
  6555.     End     
  6556. End
  6557.  
  6558. Done:
  6559. Return(@Return)
  6560.  
  6561. GO
  6562.  
  6563. Create Procedure [AzMan_SPS_Enum_AzApplicationGroup_SIDNonMembers]
  6564. (
  6565.      @Return   int output,
  6566.      @GroupID int
  6567. )
  6568. as 
  6569. Begin
  6570.     DECLARE @RowCount INT, @Error INT
  6571.     Declare @AccessAtObjType [tinyint]
  6572.  
  6573.     DECLARE @SaclIsOn [bit]
  6574.     Set @SaclIsOn = 0
  6575.     -- we don't care about SACL (0 for the second last parameter)
  6576.     -- Check access at this object
  6577.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@GroupID, 5, 0, @SaclIsOn output
  6578.     
  6579.     if @Return <= 0
  6580.     Begin
  6581.         goto Done
  6582.     End
  6583.     -- The user either has admin, reader or delegated user at the Group
  6584.     -- So he can see this object 
  6585.     Else if @Return = 1 or @Return = 2 or @Return = 3
  6586.     Begin
  6587.  
  6588.         Select [MemberSID]
  6589.         From [AzMan_Group_SIDMember]
  6590.         where GroupID = @GroupID  and [Member] = 0
  6591.         
  6592.         SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  6593.         if @Error <> 0 
  6594.         Begin
  6595.             Set @Return = @Error
  6596.         End
  6597.         else
  6598.         Begin
  6599.             Set @Return = 0
  6600.         End
  6601.         
  6602.     End     
  6603. End
  6604.  
  6605. Done:
  6606. Return(@Return)
  6607.  
  6608. GO
  6609.  
  6610. Create Procedure [AzMan_SPS_Enum_AzApplicationGroup_AppMembers]
  6611. (
  6612.      @Return   int output,
  6613.      @GroupID int
  6614. )
  6615. as 
  6616. Begin
  6617.     DECLARE @RowCount INT, @Error INT
  6618.     Declare @AccessAtObjType [tinyint]
  6619.     
  6620.     DECLARE @SaclIsOn [bit]
  6621.     Set @SaclIsOn = 0
  6622.     -- we don't care about SACL (0 for the second last parameter)
  6623.     -- Check access at this object
  6624.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@GroupID, 5, 0, @SaclIsOn output
  6625.     
  6626.     if @Return <= 0
  6627.     Begin
  6628.         goto Done
  6629.     End
  6630.     -- The user either has admin, reader or delegated user at the Group
  6631.     -- So he can see this object 
  6632.     Else if @Return = 1 or @Return = 2 or @Return = 3
  6633.     Begin
  6634.  
  6635.         Select [ObjectGuid]
  6636.         From AzMan_AzApplicationGroup 
  6637.         where ID in ( Select ChildID from AzMan_Group_AppMember where GroupID = @GroupID and [Member] = 1 )     
  6638.         
  6639.         SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  6640.         if @Error <> 0 
  6641.         Begin
  6642.             Set @Return = @Error
  6643.         End
  6644.         else
  6645.         Begin
  6646.             Set @Return = 0
  6647.         End
  6648.     End 
  6649.         
  6650. End
  6651.  
  6652. Done:
  6653. Return(@Return)
  6654.  
  6655. GO
  6656.  
  6657. Create Procedure [AzMan_SPS_Enum_AzApplicationGroup_AppNonMembers]
  6658. (
  6659.      @Return   int output,
  6660.      @GroupID int
  6661. )
  6662. as 
  6663. Begin
  6664.     DECLARE @RowCount INT, @Error INT
  6665.     Declare @AccessAtObjType [tinyint]
  6666.     
  6667.     DECLARE @SaclIsOn [bit]
  6668.     Set @SaclIsOn = 0
  6669.     -- we don't care about SACL (0 for the second last parameter)
  6670.     -- Check access at this object
  6671.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@GroupID, 5, 0, @SaclIsOn output
  6672.     
  6673.     if @Return <= 0
  6674.     Begin
  6675.         goto Done
  6676.     End
  6677.     -- The user either has admin, reader or delegated user at the Group
  6678.     -- So he can see this object 
  6679.     Else if @Return = 1 or @Return = 2 or @Return = 3
  6680.     Begin
  6681.         Select [ObjectGuid]
  6682.         From AzMan_AzApplicationGroup 
  6683.         where ID in ( Select ChildID from AzMan_Group_AppMember where GroupID = @GroupID and [Member] = 0 )     
  6684.  
  6685.             SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  6686.             if @Error <> 0 
  6687.             Begin
  6688.                 Set @Return = @Error
  6689.             End
  6690.             else
  6691.             Begin
  6692.                 Set @Return = 0
  6693.             End
  6694.     End 
  6695.         
  6696. End
  6697.  
  6698. Done:
  6699. Return(@Return)
  6700.  
  6701. GO
  6702.  
  6703. Create Procedure [AzMan_SPS_Enum_AzRoleAssignment_SIDMembers]
  6704. (
  6705.      @Return   int output,
  6706.      @RoleID int
  6707. )
  6708. as 
  6709. Begin
  6710.     DECLARE @RowCount INT, @Error INT
  6711.     Declare @AccessAtObjType [tinyint]
  6712.     
  6713.     DECLARE @SaclIsOn [bit]
  6714.     Set @SaclIsOn = 0
  6715.     -- we don't care about SACL (0 for the second last parameter)
  6716.     -- Check access at this object
  6717.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@RoleID, 6, 0, @SaclIsOn output
  6718.     
  6719.     if @Return <= 0
  6720.     Begin
  6721.         goto Done
  6722.     End
  6723.     -- The user either has admin, reader or delegated user at the Role
  6724.     -- So he can see this object 
  6725.     Else if @Return = 1 or @Return = 2 or @Return = 3
  6726.     Begin
  6727.  
  6728.         Select [MemberSID]
  6729.         From [AzMan_Role_SIDMember]
  6730.         where RoleID = @RoleID
  6731.  
  6732.         SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  6733.         if @Error <> 0 
  6734.         Begin
  6735.             Set @Return = @Error
  6736.         End
  6737.         else
  6738.         Begin
  6739.             Set @Return = 0
  6740.         End
  6741.     End 
  6742.         
  6743. End
  6744.  
  6745. Done:
  6746. Return(@Return)
  6747.  
  6748. GO
  6749.  
  6750. Create Procedure [AzMan_SPS_Enum_AzRoleAssignment_AppMembers]
  6751. (
  6752.      @Return   int output,
  6753.      @RoleID int
  6754. )
  6755. as 
  6756. Begin
  6757.     DECLARE @RowCount INT, @Error INT
  6758.     Declare @AccessAtObjType [tinyint]
  6759.     
  6760.     DECLARE @SaclIsOn [bit]
  6761.     Set @SaclIsOn = 0
  6762.     -- we don't care about SACL (0 for the second last parameter)
  6763.     -- Check access at this object
  6764.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@RoleID, 6, 0, @SaclIsOn output
  6765.     
  6766.     if @Return <= 0
  6767.     Begin
  6768.         goto Done
  6769.     End
  6770.     -- The user either has admin, reader or delegated user at the Role
  6771.     -- So he can see this object 
  6772.     Else if @Return = 1 or @Return = 2 or @Return = 3
  6773.     Begin
  6774.  
  6775.         Select [ObjectGuid]
  6776.         From AzMan_AzApplicationGroup where 
  6777.         ID IN ( select ChildID from [AzMan_Role_AppMember] where RoleID = @RoleID)
  6778.         
  6779.         SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  6780.         if @Error <> 0 
  6781.         Begin
  6782.             Set @Return = @Error
  6783.         End
  6784.         else
  6785.         Begin
  6786.             Set @Return = 0
  6787.         End
  6788.     End 
  6789. End
  6790.  
  6791. Done:
  6792. Return(@Return)
  6793.  
  6794. go
  6795.  
  6796. Create Procedure [AzMan_SPS_Get_AzScope]
  6797. (
  6798.      @Return   int output,
  6799.      @ScopeID int
  6800. )
  6801. as 
  6802. Begin
  6803.     DECLARE @RowCount INT, @Error INT
  6804.     Declare @AccessAtObjType [tinyint]
  6805.     
  6806.     DECLARE @SaclIsOn [bit]
  6807.     Set @SaclIsOn = 0
  6808.     -- we don't care about SACL (0 for the second last parameter)
  6809.     -- Check access at this object
  6810.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ScopeID, 4, 0, @SaclIsOn output
  6811.     
  6812.     if @Return <= 0
  6813.     Begin
  6814.         goto Done
  6815.     End
  6816.     -- The user either has admin, reader or delegated user at the App
  6817.     -- So he can see this object 
  6818.     Else if @Return = 1 or @Return = 2 or @Return = 3
  6819.     Begin
  6820.  
  6821.         Select
  6822.         [AppId],
  6823.         [NameLen],
  6824.         IsNull([HasSpecificUsers], 0) AS HasSpecificUsers,
  6825.         [NameHash],
  6826.         [ObjectGuid] ,
  6827.         [Description],
  6828.         [Name],
  6829.         [ApplicationData]
  6830.         From [AzMan_AzScope]
  6831.         where ID = @ScopeID 
  6832.         SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  6833.  
  6834.         if @Error <> 0 
  6835.         Begin
  6836.             Set @Return = @Error
  6837.         End 
  6838.         else
  6839.         Begin 
  6840.             If @RowCount = 0
  6841.             Begin
  6842.                 Set @Return = -1168 --Record not found
  6843.             End
  6844.         End     
  6845.     End     
  6846.         
  6847. End
  6848.  
  6849. Done:
  6850. Return(@Return)
  6851.  
  6852. GO
  6853.  
  6854. Create Procedure [AzMan_SPS_Enum_AzOperation]
  6855. (
  6856.      @Return   int output,
  6857.      @AppID int
  6858. )
  6859. as 
  6860. Begin
  6861.     DECLARE @RowCount INT, @Error INT
  6862.     Declare @AccessAtObjType [tinyint]
  6863.     
  6864.     DECLARE @SaclIsOn [bit]
  6865.     Set @SaclIsOn = 0
  6866.     -- we don't care about SACL (0 for the second last parameter)
  6867.     -- Check access at the Application
  6868.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@AppID, 1, 0, @SaclIsOn output
  6869.     
  6870.     if @Return <= 0
  6871.     Begin
  6872.         goto Done
  6873.     End
  6874.     -- The user either has admin, reader or delegated user at the App
  6875.     -- So he can see the operations
  6876.     Else if @Return = 1 or @Return = 2 or @Return = 3
  6877.     Begin
  6878.  
  6879.         Select
  6880.         [ID], 
  6881.         [OperationID],
  6882.         [ObjectGuid] ,
  6883.         [Name],
  6884.         [Description],
  6885.         [ApplicationData]
  6886.         From [AzMan_AzOperation]
  6887.         where AppID = @AppID  
  6888.  
  6889.         SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  6890.         if @Error <> 0 
  6891.         Begin
  6892.             Set @Return = @Error
  6893.         End
  6894.         else
  6895.         Begin
  6896.             Set @Return = 0
  6897.         End
  6898.     End     
  6899.         
  6900. End
  6901.  
  6902. Done:
  6903. Return(@Return)
  6904.  
  6905. GO
  6906.  
  6907. Create Procedure [AzMan_SPS_Get_AzOperation]
  6908. (
  6909.      @Return   int output,
  6910.      @ID int
  6911. )
  6912. as 
  6913. Begin
  6914.     DECLARE @RowCount INT, @Error INT
  6915.     Declare @AccessAtObjType [tinyint]
  6916.     
  6917.     DECLARE @SaclIsOn [bit]
  6918.     Set @SaclIsOn = 0
  6919.     -- we don't care about SACL (0 for the second last parameter)
  6920.     -- Check access at object 
  6921.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 2, 0, @SaclIsOn output
  6922.     
  6923.     if @Return <= 0
  6924.     Begin
  6925.         goto Done
  6926.     End
  6927.     -- The user either has admin, reader or delegated user at the parent
  6928.     -- So he can see the operation
  6929.     Else if @Return = 1 or @Return = 2 or @Return = 3
  6930.     Begin
  6931.  
  6932.         Select
  6933.         [OperationID],        
  6934.         [ObjectGuid] ,
  6935.         [Name]       ,
  6936.         [Description],
  6937.         [ApplicationData]
  6938.         From [AzMan_AzOperation]
  6939.         where ID = @Id
  6940.         
  6941.         SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  6942.  
  6943.         if @Error <> 0 
  6944.         Begin
  6945.             Set @Return = @Error
  6946.         End 
  6947.         else
  6948.         Begin 
  6949.             If @RowCount = 0
  6950.             Begin
  6951.                 Set @Return = -1168 --Record not found
  6952.             End
  6953.         End     
  6954.     End
  6955. End
  6956.  
  6957. Done:
  6958. Return (@Return)
  6959.  
  6960. GO
  6961.  
  6962. Create Procedure [AzMan_SPS_Get_AzTask]
  6963. (
  6964.      @Return   int output,
  6965.      @ID int
  6966. )
  6967. as 
  6968. Begin
  6969.     DECLARE @RowCount INT, @Error INT
  6970.     Declare @AccessAtObjType [tinyint]
  6971.     
  6972.     DECLARE @SaclIsOn [bit]
  6973.     Set @SaclIsOn = 0
  6974.     -- we don't care about SACL (0 for the second last parameter)
  6975.     -- Check access at object 
  6976.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 3, 0, @SaclIsOn output
  6977.     
  6978.     if @Return <= 0
  6979.     Begin
  6980.         goto Done
  6981.     End
  6982.     -- The user either has admin, reader or delegated user at the parent
  6983.     -- So he can see the object
  6984.     Else if @Return = 1 or @Return = 2 or @Return = 3
  6985.     Begin
  6986.  
  6987.         Select
  6988.             [IsRoleDefinition],
  6989.             [ObjectGuid] ,
  6990.             [Name],
  6991.             [Description],
  6992.             [ApplicationData]
  6993.         From [AzMan_AzTask]
  6994.         where ID = @Id
  6995.         
  6996.         SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  6997.  
  6998.         if @Error <> 0 
  6999.         Begin
  7000.             Set @Return = @Error
  7001.         End 
  7002.         else
  7003.         Begin 
  7004.             If @RowCount = 0
  7005.             Begin
  7006.                 Set @Return = -1168 --Record not found
  7007.             End
  7008.         End     
  7009.         
  7010.     End     
  7011. End
  7012.  
  7013. Done:
  7014. Return(@Return)
  7015.  
  7016. GO
  7017.  
  7018. Create Procedure [AzMan_SPS_Get_AzRoleAssignment]
  7019. (
  7020.      @Return   int output,
  7021.      @ID int
  7022. )
  7023. as 
  7024. Begin
  7025.     DECLARE @RowCount INT, @Error INT
  7026.     Declare @AccessAtObjType [tinyint]
  7027.     
  7028.     DECLARE @SaclIsOn [bit]
  7029.     Set @SaclIsOn = 0
  7030.     -- we don't care about SACL (0 for the second last parameter)
  7031.     -- Check access at object 
  7032.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 6, 0, @SaclIsOn output
  7033.     
  7034.     if @Return <= 0
  7035.     Begin
  7036.         goto Done
  7037.     End
  7038.     -- The user either has admin, reader or delegated user at the parent
  7039.     -- So he can see the object
  7040.     Else if @Return = 1 or @Return = 2 or @Return = 3
  7041.     Begin
  7042.  
  7043.         Select
  7044.         [ObjectGuid] ,
  7045.         [Name]       ,
  7046.         [Description],
  7047.         [ApplicationData]
  7048.         From [AzMan_AzRoleAssignment]
  7049.         where ID = @Id
  7050.         
  7051.         SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  7052.  
  7053.         if @Error <> 0 
  7054.         Begin
  7055.             Set @Return = @Error
  7056.         End 
  7057.         else
  7058.         Begin 
  7059.             If @RowCount = 0
  7060.             Begin
  7061.                 Set @Return = -1168 --Record not found
  7062.             End
  7063.         End     
  7064.     End
  7065.     
  7066. End
  7067.  
  7068. Done:
  7069. Return (@Return)
  7070.  
  7071.  
  7072. GO
  7073.  
  7074.  
  7075. -- Delete Queries
  7076.  
  7077. Create Procedure [AzMan_SPD_AzOperation]
  7078.  
  7079. -- Delete a specific record from table [AzMan_AzOperation]
  7080.  
  7081. (
  7082.  @Return   int output,
  7083.  @ID [int] 
  7084. ,@AppId [int] = Null 
  7085. )
  7086.  
  7087. As
  7088.  
  7089. Set NoCount On
  7090.  
  7091.     DECLARE @RowCount INT, @Error INT
  7092.     DECLARE @parentName nvarchar(512)
  7093.     DECLARE @parentGuid uniqueidentifier
  7094.  
  7095.     DECLARE @childName nvarchar(512)
  7096.     DECLARE @childGuid uniqueidentifier
  7097.     Declare @AccessAtObjType [tinyint]
  7098.     
  7099.     DECLARE @SaclIsOn [bit]
  7100.     Set @SaclIsOn = 0
  7101.     -- Check access at this object
  7102.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 2, 1, @SaclIsOn output
  7103.     
  7104.     if @Return <> 1
  7105.     Begin
  7106.         if (@Return >= 2)
  7107.         Begin
  7108.             Set @Return = -5 
  7109.         End
  7110.         goto Done
  7111.     End
  7112.  
  7113.     Set @Return = 0
  7114.  
  7115.     -- get info for auditing
  7116.     IF @SaclIsOn = 1
  7117.         BEGIN
  7118.             SELECT @parentName = App.Name, @parentGuid = App.ObjectGuid FROM [dbo].[AzMan_AzApplication] App
  7119.                     WHERE App.ID = @AppId
  7120.             SELECT @childName = Op.Name, @childGuid = Op.ObjectGuid FROM [dbo].[AzMan_AzOperation] Op
  7121.                     WHERE Op.ID = @ID
  7122.         END
  7123.             
  7124.     Delete From [dbo].[AzMan_AzOperation]
  7125.  
  7126.     Where
  7127.         ((@ID Is Null) Or ([ID] = @ID))
  7128.     And ((@AppId Is Null) Or ([AppId] = @AppId))
  7129.  
  7130.     SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  7131.     If @RowCount <> 1
  7132.     Begin
  7133.         if @Error <> 0 
  7134.         Begin   
  7135.             Set @Return = @Error
  7136.         End
  7137.         else
  7138.         Begin
  7139.             Set @Return = -1168 --Record not found
  7140.         End
  7141.     End
  7142.  
  7143.     -- generate an audit
  7144.     IF @SaclIsOn = 1
  7145.         BEGIN
  7146.             EXEC [AzMan_SP_GenerateObjectAudit]
  7147.                     @Return,
  7148.                     1,  -- 1 for SE_AUDITID_AZ_SQL_OBJECT_DELETE
  7149.                     1,  -- 1 for application
  7150.                     @parentName,
  7151.                     @parentGuid,
  7152.                     2,  -- 2 for Operation
  7153.                     @childName,
  7154.                     @childGuid,
  7155.                     N'' -- no other info
  7156.         END
  7157. Done:
  7158. Set NoCount Off
  7159.  
  7160. Return(@Return)
  7161.  
  7162. GO
  7163.  
  7164. Create Procedure [AzMan_SPD_AzScope]
  7165. -- Delete a specific record from table [AzMan_AzScope]
  7166.  
  7167. (
  7168.  @Return   int output,
  7169.  @ID [int]              
  7170. ,@AppId [int] = Null 
  7171. )
  7172.  
  7173.  
  7174. As
  7175. DECLARE @parentName nvarchar(512)
  7176. DECLARE @parentGuid uniqueidentifier
  7177.  
  7178. DECLARE @childName nvarchar(512)
  7179. DECLARE @childGuid uniqueidentifier
  7180.     
  7181. Set NoCount On
  7182.  
  7183.     DECLARE @RowCount INT, @Error INT
  7184.     Declare @AccessAtObjType [tinyint]
  7185.     DECLARE @SaclIsOn [bit]
  7186.     Set @SaclIsOn = 0
  7187.     -- Check access at this object
  7188.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 4, 1, @SaclIsOn output
  7189.     
  7190.     if @Return <> 1
  7191.     Begin
  7192.         if (@Return >= 2)
  7193.         Begin
  7194.             Set @Return = -5 
  7195.         End
  7196.         goto Done
  7197.     End
  7198.  
  7199.     Set @Return = 0
  7200.  
  7201.     -- get info for auditing
  7202.     IF @SaclIsOn = 1
  7203.         BEGIN
  7204.             SELECT @parentName = App.Name, @parentGuid = App.ObjectGuid FROM [dbo].[AzMan_AzApplication] App
  7205.                     WHERE App.ID = @AppId
  7206.             SELECT @childName = scope.Name, @childGuid = scope.ObjectGuid FROM [dbo].[AzMan_AzScope] scope
  7207.                     WHERE scope.ID = @ID
  7208.         END
  7209.             
  7210.     Delete From [dbo].[AzMan_AzScope]
  7211.  
  7212.     Where
  7213.         ((@ID Is Null) Or ([ID] = @ID))
  7214.     And ((@AppId Is Null) Or ([AppId] = @AppId))
  7215.     
  7216.     SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  7217.     If @RowCount <> 1
  7218.     Begin
  7219.         if @Error <> 0 
  7220.         Begin   
  7221.             Set @Return = @Error
  7222.         End
  7223.         else
  7224.         Begin
  7225.             Set @Return = -1168 --Record not found
  7226.         End 
  7227.     End
  7228.  
  7229.     -- generate an audit
  7230.     IF @SaclIsOn = 1
  7231.         BEGIN
  7232.             EXEC [AzMan_SP_GenerateObjectAudit]
  7233.                 @Return,
  7234.                 1,  -- 1 for SE_AUDITID_AZ_SQL_OBJECT_DELETE
  7235.                 1,  -- 1 for application
  7236.                 @parentName,
  7237.                 @parentGuid,
  7238.                 4,  -- 4 for scope
  7239.                 @childName,
  7240.                 @childGuid,
  7241.                 N'' -- no other info
  7242.         END
  7243.  
  7244. Done:
  7245. Set NoCount Off
  7246.  
  7247. Return(@Return)
  7248.  
  7249. GO
  7250.  
  7251. Create Procedure [AzMan_SPD_AzApplication]
  7252.  
  7253. -- Delete a specific record from table [AzMan_AzApplication]
  7254.  
  7255. (
  7256.  @Return   int output,
  7257.  @ID [int] -- for [AzMan_AzApplication].[ID] column
  7258. ,@StoreId [int] = Null 
  7259. )
  7260.  
  7261. As
  7262.     Set NoCount On
  7263.  
  7264.     DECLARE @RowCount INT, @Error INT
  7265.     DECLARE @parentName nvarchar(512)
  7266.     DECLARE @parentGuid uniqueidentifier
  7267.  
  7268.     DECLARE @childName nvarchar(512)
  7269.     DECLARE @childGuid uniqueidentifier
  7270.     Declare @AccessAtObjType [tinyint]    
  7271.     
  7272.     DECLARE @SaclIsOn [bit]
  7273.     Set @SaclIsOn = 0
  7274.     -- Check access at this object
  7275.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 1, 1, @SaclIsOn output
  7276.     
  7277.     if @Return <> 1
  7278.     Begin
  7279.         if (@Return >= 2)
  7280.         Begin
  7281.             Set @Return = -5 
  7282.         End
  7283.         goto Done
  7284.     End
  7285.     
  7286.     Set @Return = 0
  7287.  
  7288.     -- get info for auditing
  7289.     IF @SaclIsOn = 1
  7290.         BEGIN
  7291.             SELECT @parentName = store.Name, @parentGuid = store.ObjectGuid FROM [dbo].[AzMan_AzAuthorizationStore] store
  7292.                     WHERE store.ID = @StoreId
  7293.             SELECT @childName = app.Name, @childGuid = app.ObjectGuid FROM [dbo].[AzMan_AzApplication] app
  7294.                     WHERE app.ID = @ID
  7295.         END
  7296.         
  7297.     Delete From [dbo].[AzMan_AzApplication]
  7298.  
  7299.     Where
  7300.         ((@ID Is Null) Or ([ID] = @ID))
  7301.     And ((@StoreId Is Null) Or ([StoreId] = @StoreId))
  7302.  
  7303.     
  7304.     SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  7305.     If @RowCount <> 1
  7306.     Begin
  7307.         if @Error <> 0 
  7308.         Begin   
  7309.             Set @Return = @Error
  7310.         End
  7311.         else
  7312.         Begin
  7313.             Set @Return = -1168 --Record not found
  7314.         End 
  7315.     End
  7316.     
  7317.     -- generate an audit
  7318.     IF @SaclIsOn = 1
  7319.         BEGIN
  7320.             EXEC [AzMan_SP_GenerateObjectAudit]
  7321.                     @Return,
  7322.                     1,  -- 1 for SE_AUDITID_AZ_SQL_OBJECT_DELETE
  7323.                     0,  -- 0 for store
  7324.                     @parentName,
  7325.                     @parentGuid,
  7326.                     1,  -- 1 for application
  7327.                     @childName,
  7328.                     @childGuid,
  7329.                     N'' -- no other info
  7330.         END
  7331. Done:
  7332.     Set NoCount Off
  7333.             
  7334.     Return(@Return)
  7335.  
  7336. GO
  7337.  
  7338. Create Procedure [AzMan_SPD_AzAuthorizationStore]
  7339. -- Delete a specific record from table [AzMan_AzAuthorizationStore]
  7340.  
  7341. (
  7342.  @Return   int output,
  7343.  @ID [int]              
  7344. )
  7345.  
  7346. As
  7347.  
  7348. Set NoCount On
  7349.  
  7350.     DECLARE @RowCount INT, @Error INT
  7351.     DECLARE @parentName nvarchar(512)
  7352.     DECLARE @parentGuid uniqueidentifier
  7353.     Declare @AccessAtObjType [tinyint]    
  7354.     DECLARE @SaclIsOn [bit]
  7355.     Set @SaclIsOn = 0
  7356.     
  7357.     -- Check access at this object
  7358.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 0, 1, @SaclIsOn output
  7359.     
  7360.     -- get info for auditing
  7361.     IF @SaclIsOn = 1
  7362.         BEGIN
  7363.             SELECT @parentName = store.Name, @parentGuid = store.ObjectGuid FROM [dbo].[AzMan_AzAuthorizationStore] store
  7364.                     WHERE store.ID = @ID
  7365.         END
  7366.     
  7367.     if @Return <> 1
  7368.         Begin
  7369.             if (@Return >= 2)
  7370.                 Set @Return = -5
  7371.         End
  7372.     ELSE
  7373.         Begin
  7374.             Set @Return = 0
  7375.             Delete From [dbo].[AzMan_AzAuthorizationStore]
  7376.                 Where ((@ID Is Null) Or ([ID] = @ID))
  7377.         End
  7378.  
  7379.     -- generate an audit
  7380.     IF @SaclIsOn = 1
  7381.         BEGIN
  7382.             EXEC [AzMan_SP_GenerateObjectAudit]
  7383.                 @Return,
  7384.                 1,  -- 1 for SE_AUDITID_AZ_SQL_OBJECT_DELETE
  7385.                 0,  -- 0 for store
  7386.                 @parentName,
  7387.                 @parentGuid,
  7388.                 0,  -- 0 for store
  7389.                 @parentName,
  7390.                 @parentGuid,
  7391.                 N'' -- no other info
  7392.         END
  7393. Set NoCount Off
  7394.  
  7395. Return(@Return)
  7396.  
  7397. GO
  7398.  
  7399. Create Procedure [AzMan_SPD_AzApplicationGroup]
  7400. -- Delete a specific record from table [AzMan_AzApplicationGroup]
  7401. (
  7402.  @Return   int output,
  7403.  @ID [int] 
  7404. ,@ParentId [int] = Null 
  7405. )
  7406.  
  7407. As
  7408.  
  7409.     Set NoCount On
  7410.  
  7411.     DECLARE @RowCount INT, @Error INT
  7412.     DECLARE @parentName nvarchar(512)
  7413.     DECLARE @parentGuid uniqueidentifier
  7414.  
  7415.     DECLARE @childName nvarchar(512)
  7416.     DECLARE @childGuid uniqueidentifier
  7417.     DECLARE @ParentType tinyint
  7418.     Declare @AccessAtObjType [tinyint]    
  7419.     
  7420.     DECLARE @SaclIsOn [bit]
  7421.     Set @SaclIsOn = 0
  7422.     -- Check access at this object
  7423.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 5, 1, @SaclIsOn output
  7424.     
  7425.     if @Return <> 1
  7426.     Begin
  7427.         if (@Return >= 2)
  7428.         Begin
  7429.             Set @Return = -5 
  7430.         End
  7431.         goto Done
  7432.     End
  7433.  
  7434.     Set @Return = 0
  7435.  
  7436.     -- get info for auditing
  7437.     IF @SaclIsOn = 1
  7438.         BEGIN
  7439.             SELECT @ParentType = appGroup.ParentType, 
  7440.                     @childName = appGroup.Name, 
  7441.                     @childGuid = appGroup.ObjectGuid 
  7442.                     FROM [dbo].[AzMan_AzApplicationGroup] appGroup
  7443.                     WHERE appGroup.ID = @ID
  7444.             IF @ParentType = 0  -- store
  7445.                 SELECT  @parentName = store.Name, 
  7446.                         @parentGuid = store.ObjectGuid 
  7447.                         FROM [dbo].[AzMan_AzAuthorizationStore] store
  7448.                         WHERE store.ID = @ParentId
  7449.             ELSE IF @ParentType = 1  -- app
  7450.                 SELECT  @parentName = app.Name, 
  7451.                         @parentGuid = app.ObjectGuid 
  7452.                         FROM [dbo].[AzMan_AzApplication] app
  7453.                         WHERE app.ID = @ParentId
  7454.             ELSE IF @ParentType = 4  -- scope
  7455.                 SELECT  @parentName = scope.Name, 
  7456.                         @parentGuid = scope.ObjectGuid 
  7457.                         FROM [dbo].[AzMan_AzScope] scope
  7458.                         WHERE scope.ID = @ParentId
  7459.         END
  7460.     Delete From [dbo].[AzMan_AzApplicationGroup]
  7461.     Where
  7462.         ([ID] = @ID)
  7463.  
  7464.     SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  7465.     If @RowCount <> 1
  7466.     Begin
  7467.         if @Error <> 0 
  7468.         Begin   
  7469.             Set @Return = @Error
  7470.         End
  7471.         else
  7472.         Begin
  7473.             Set @Return = -1168 --Record not found
  7474.         End 
  7475.     End
  7476.  
  7477.     -- generate an audit
  7478.     IF @SaclIsOn = 1
  7479.         BEGIN
  7480.             EXEC [AzMan_SP_GenerateObjectAudit]
  7481.                     @Return,
  7482.                     1,  -- 1 for SE_AUDITID_AZ_SQL_OBJECT_DELETE
  7483.                     @ParentType,
  7484.                     @parentName,
  7485.                     @parentGuid,
  7486.                     5,  -- 5 for group
  7487.                     @childName,
  7488.                     @childGuid,
  7489.                     N'' -- no other info
  7490.         END
  7491. Done:
  7492. Set NoCount Off
  7493.  
  7494. Return(@Return)
  7495.  
  7496. GO
  7497.  
  7498. Create Procedure [AzMan_SPD_AzTask]
  7499. -- Delete a specific record from table [AzMan_AzTask]
  7500. (
  7501.  @Return   int output,
  7502.  @ID [int] 
  7503. ,@ParentId [int] = Null 
  7504. )
  7505.  
  7506. As
  7507.     Set NoCount On
  7508.  
  7509.     DECLARE @RowCount INT, @Error INT
  7510.     DECLARE @parentName nvarchar(512)
  7511.     DECLARE @parentGuid uniqueidentifier
  7512.  
  7513.     DECLARE @childName nvarchar(512)
  7514.     DECLARE @childGuid uniqueidentifier
  7515.     DECLARE @ParentType tinyint
  7516.     Declare @AccessAtObjType [tinyint]    
  7517.     
  7518.     DECLARE @SaclIsOn [bit]
  7519.     Set @SaclIsOn = 0
  7520.     -- Check access at this object
  7521.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 3, 1, @SaclIsOn output
  7522.     
  7523.     if @Return <> 1
  7524.     Begin
  7525.         if (@Return >= 2)
  7526.         Begin
  7527.             Set @Return = -5 
  7528.         End
  7529.         goto Done
  7530.     End
  7531.     
  7532.     
  7533.     Set @Return = 0 
  7534.     -- get info for auditing
  7535.     IF @SaclIsOn = 1
  7536.         BEGIN
  7537.             SELECT @ParentType = task.ParentType, 
  7538.                     @childName = task.Name, 
  7539.                     @childGuid = task.ObjectGuid 
  7540.                     FROM [dbo].[AzMan_AzTask] task
  7541.                     WHERE task.ID = @ID
  7542.             IF @ParentType = 1  -- app
  7543.                 SELECT  @parentName = app.Name, 
  7544.                         @parentGuid = app.ObjectGuid 
  7545.                         FROM [dbo].[AzMan_AzApplication] app
  7546.                         WHERE app.ID = @ParentId
  7547.             ELSE IF @ParentType = 4  -- scope
  7548.                 SELECT  @parentName = scope.Name, 
  7549.                         @parentGuid = scope.ObjectGuid 
  7550.                         FROM [dbo].[AzMan_AzScope] scope
  7551.                         WHERE scope.ID = @ParentId
  7552.         END
  7553.         
  7554.     Delete From [dbo].[AzMan_AzTask]
  7555.  
  7556.     Where ([ID] = @ID)
  7557.  
  7558.     SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  7559.     If @RowCount <> 1
  7560.     Begin
  7561.         if @Error <> 0 
  7562.         Begin   
  7563.             Set @Return = @Error
  7564.         End
  7565.         else
  7566.         Begin
  7567.             Set @Return = -1168 --Record not found
  7568.         End 
  7569.     End
  7570.     
  7571.     -- generate an audit
  7572.     IF @SaclIsOn = 1
  7573.         BEGIN
  7574.             EXEC [AzMan_SP_GenerateObjectAudit]
  7575.                     @Return,
  7576.                     1,  -- 1 for SE_AUDITID_AZ_SQL_OBJECT_DELETE
  7577.                     @ParentType,
  7578.                     @parentName,
  7579.                     @parentGuid,
  7580.                     3,  -- 3 for task
  7581.                     @childName,
  7582.                     @childGuid,
  7583.                     N'' -- no other info
  7584.         END
  7585. Done:
  7586. Set NoCount Off
  7587.  
  7588. Return(@Return)
  7589.  
  7590. GO
  7591.  
  7592. Create Procedure [AzMan_SPD_AzRoleAssignment]
  7593. -- Delete a specific record from table 
  7594. (
  7595.  @Return   int output,
  7596.  @ID [int] 
  7597. ,@ParentId [int] = Null 
  7598. )
  7599. As
  7600.  
  7601.     Set NoCount On
  7602.  
  7603.     DECLARE @RowCount INT, @Error INT
  7604.     DECLARE @parentName nvarchar(512)
  7605.     DECLARE @parentGuid uniqueidentifier
  7606.  
  7607.     DECLARE @childName nvarchar(512)
  7608.     DECLARE @childGuid uniqueidentifier
  7609.     DECLARE @ParentType tinyint
  7610.     Declare @AccessAtObjType [tinyint]    
  7611.     
  7612.     DECLARE @SaclIsOn [bit]
  7613.     Set @SaclIsOn = 0
  7614.     -- Check access at this object
  7615.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 6, 1, @SaclIsOn output
  7616.     
  7617.     if @Return <> 1
  7618.     Begin
  7619.         if (@Return >= 2)
  7620.         Begin
  7621.             Set @Return = -5 
  7622.         End
  7623.         goto Done
  7624.     End
  7625.     
  7626.     Set @Return = 0 
  7627.     -- get info for auditing
  7628.     IF @SaclIsOn = 1
  7629.         BEGIN
  7630.             SELECT @ParentType = role.ParentType, 
  7631.                     @childName = role.Name, 
  7632.                     @childGuid = role.ObjectGuid 
  7633.                     FROM [dbo].[AzMan_AzRoleAssignment] role
  7634.                     WHERE role.ID = @ID
  7635.             IF @ParentType = 1  -- app
  7636.                 SELECT  @parentName = app.Name, 
  7637.                         @parentGuid = app.ObjectGuid 
  7638.                         FROM [dbo].[AzMan_AzApplication] app
  7639.                         WHERE app.ID = @ParentId
  7640.             ELSE IF @ParentType = 4  -- scope
  7641.                 SELECT  @parentName = scope.Name, 
  7642.                         @parentGuid = scope.ObjectGuid 
  7643.                         FROM [dbo].[AzMan_AzScope] scope
  7644.                         WHERE scope.ID = @ParentId
  7645.         END
  7646.         
  7647.     Delete From [dbo].[AzMan_AzRoleAssignment]
  7648.     Where ([ID] = @ID)
  7649.  
  7650.     SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
  7651.     If @RowCount <> 1
  7652.     Begin
  7653.         if @Error <> 0 
  7654.         Begin   
  7655.             Set @Return = @Error
  7656.         End
  7657.         else
  7658.         Begin
  7659.             Set @Return = -1168 --Record not found
  7660.         End 
  7661.     End
  7662.     
  7663.     -- generate an audit
  7664.     IF @SaclIsOn = 1
  7665.         BEGIN
  7666.             EXEC [AzMan_SP_GenerateObjectAudit]
  7667.                     @Return,
  7668.                     1,  -- 1 for SE_AUDITID_AZ_SQL_OBJECT_DELETE
  7669.                     @ParentType,
  7670.                     @parentName,
  7671.                     @parentGuid,
  7672.                     6,  -- 6 for role
  7673.                     @childName,
  7674.                     @childGuid,
  7675.                     N'' -- no other info
  7676.         END
  7677. Done:
  7678. Set NoCount Off
  7679.  
  7680. Return(@Return)
  7681.  
  7682. GO
  7683.  
  7684. IF EXISTS (SELECT name FROM sysobjects
  7685.      WHERE name = 'AzMan_SPS_Enum_AzAuthorizationStoreUpdateTimeStamp' and type = 'P')
  7686.     DROP PROCEDURE AzMan_SPS_Enum_AzAuthorizationStoreUpdateTimeStamp
  7687. GO
  7688.  
  7689. -- query the timestamps of a store
  7690. CREATE PROCEDURE AzMan_SPS_Enum_AzAuthorizationStoreUpdateTimeStamp
  7691. (
  7692. @ReturnCode int output,
  7693. @storeID int
  7694. )
  7695. AS 
  7696. SELECT @ReturnCode = 0
  7697.  
  7698. SELECT [ID], [ObjectGuid], IsNull([RowUpdateTimeStamp], 0), IsNull([ChildUpdateTimeStamp], 0) FROM [AzMan_AzAuthorizationStore] 
  7699. WHERE [ID] = @storeID
  7700.  
  7701. Return(@@RowCount)
  7702.  
  7703. GO
  7704.  
  7705. IF EXISTS (SELECT name FROM sysobjects
  7706.      WHERE name = 'AzMan_SPS_Enum_AzApplicationUpdateTimeStamp' and type = 'P')
  7707.     DROP PROCEDURE AzMan_SPS_Enum_AzApplicationUpdateTimeStamp
  7708. GO
  7709.  
  7710. -- query the timestamps of applications
  7711. CREATE PROCEDURE AzMan_SPS_Enum_AzApplicationUpdateTimeStamp
  7712. (
  7713. @ReturnCode int output,
  7714. @storeID int
  7715. )
  7716. AS 
  7717. SELECT @ReturnCode = 0
  7718.  
  7719. SELECT [ID], [ObjectGuid], IsNull([RowUpdateTimeStamp], 0), IsNull([ChildUpdateTimeStamp], 0) FROM [AzMan_AzApplication] 
  7720. WHERE [StoreID] = @storeID
  7721.  
  7722. Return(@@RowCount)
  7723.  
  7724. GO
  7725.  
  7726. IF EXISTS (SELECT name FROM sysobjects
  7727.      WHERE name = 'AzMan_SPS_Enum_AzScopeUpdateTimeStamp' and type = 'P')
  7728.     DROP PROCEDURE AzMan_SPS_Enum_AzScopeUpdateTimeStamp
  7729. GO
  7730.  
  7731. -- query the timestamps of scopes
  7732. CREATE PROCEDURE AzMan_SPS_Enum_AzScopeUpdateTimeStamp
  7733. (
  7734. @ReturnCode int output,
  7735. @appID int
  7736. )
  7737. AS 
  7738. SELECT @ReturnCode = 0
  7739.  
  7740. SELECT [ID], [ObjectGuid], IsNull([RowUpdateTimeStamp], 0), IsNull([ChildUpdateTimeStamp], 0) FROM [AzMan_AzScope] 
  7741. WHERE [AppID] = @appID
  7742.  
  7743. Return(@@RowCount)
  7744.  
  7745. GO
  7746.  
  7747. IF EXISTS (SELECT name FROM sysobjects
  7748.      WHERE name = 'AzMan_SPS_Enum_AzApplicationGroupUpdateTimeStamp' and type = 'P')
  7749.     DROP PROCEDURE AzMan_SPS_Enum_AzApplicationGroupUpdateTimeStamp
  7750. GO
  7751.  
  7752. -- query the timestamps of application groups
  7753. CREATE PROCEDURE AzMan_SPS_Enum_AzApplicationGroupUpdateTimeStamp
  7754. (
  7755. @ReturnCode int output,
  7756. @parentID int,
  7757. @parentType tinyint
  7758. )
  7759. AS 
  7760. SELECT @ReturnCode = 0
  7761.  
  7762. IF (@parentType = 0)
  7763.     SELECT [ID], [ObjectGuid], IsNull([RowUpdateTimeStamp], 0) FROM [AzMan_AzApplicationGroup] 
  7764.     WHERE [StoreID] = @parentID
  7765. IF (@parentType = 1)
  7766.     SELECT [ID], [ObjectGuid], IsNull([RowUpdateTimeStamp], 0) FROM [AzMan_AzApplicationGroup] 
  7767.     WHERE [AppID] = @parentID
  7768. IF (@parentType = 4)
  7769.     SELECT [ID], [ObjectGuid], IsNull([RowUpdateTimeStamp], 0) FROM [AzMan_AzApplicationGroup] 
  7770.     WHERE [ScopeID] = @parentID
  7771.  
  7772. Return(@@RowCount)
  7773.  
  7774. GO
  7775.  
  7776. IF EXISTS (SELECT name FROM sysobjects
  7777.      WHERE name = 'AzMan_SPS_Enum_AzOperationUpdateTimeStamp' and type = 'P')
  7778.     DROP PROCEDURE AzMan_SPS_Enum_AzOperationUpdateTimeStamp
  7779. GO
  7780.  
  7781. -- query the timestamps of operations
  7782. CREATE PROCEDURE AzMan_SPS_Enum_AzOperationUpdateTimeStamp
  7783. (
  7784. @ReturnCode int output,
  7785. @appID int
  7786. )
  7787. AS 
  7788. SELECT @ReturnCode = 0
  7789.  
  7790. SELECT [ID], [ObjectGuid], IsNull([RowUpdateTimeStamp], 0) FROM [AzMan_AzOperation] 
  7791. WHERE [AppID] = @appID
  7792.  
  7793. Return(@@RowCount)
  7794.  
  7795. GO
  7796.  
  7797. IF EXISTS (SELECT name FROM sysobjects
  7798.      WHERE name = 'AzMan_SPS_Enum_AzRoleAssignmentUpdateTimeStamp' and type = 'P')
  7799.     DROP PROCEDURE AzMan_SPS_Enum_AzRoleAssignmentUpdateTimeStamp
  7800. GO
  7801.  
  7802. -- query the timestamps of roles
  7803. CREATE PROCEDURE AzMan_SPS_Enum_AzRoleAssignmentUpdateTimeStamp
  7804. (
  7805. @ReturnCode int output,
  7806. @parentID int,
  7807. @parentType tinyint
  7808. )
  7809. AS 
  7810. SELECT @ReturnCode = 0
  7811.  
  7812. IF (@parentType = 1)
  7813.  
  7814.     SELECT [ID], [ObjectGuid], IsNull([RowUpdateTimeStamp], 0) FROM [AzMan_AzRoleAssignment] 
  7815.     WHERE [AppID] = @parentID
  7816.  
  7817. ELSE
  7818.     SELECT [ID], [ObjectGuid], IsNull([RowUpdateTimeStamp], 0) FROM [AzMan_AzRoleAssignment] 
  7819.     WHERE [ScopeID] = @parentID
  7820.  
  7821. Return(@@RowCount)
  7822.  
  7823.  
  7824. GO
  7825.  
  7826. IF EXISTS (SELECT name FROM sysobjects
  7827.      WHERE name = 'AzMan_SPS_Enum_AzTaskUpdateTimeStamp' and type = 'P')
  7828.     DROP PROCEDURE AzMan_SPS_Enum_AzTaskUpdateTimeStamp
  7829. GO
  7830.  
  7831. -- query the timestamps of tasks
  7832. CREATE PROCEDURE AzMan_SPS_Enum_AzTaskUpdateTimeStamp
  7833. (
  7834. @ReturnCode int output,
  7835. @parentID int,
  7836. @parentType tinyint
  7837. )
  7838. AS 
  7839. SELECT @ReturnCode = 0
  7840.  
  7841. IF (@parentType = 1)
  7842.  
  7843.     SELECT [ID], [ObjectGuid], IsNull([RowUpdateTimeStamp], 0) FROM [AzMan_AzTask] 
  7844.     WHERE [AppID] = @parentID
  7845.  
  7846. ELSE
  7847.     SELECT [ID], [ObjectGuid], IsNull([RowUpdateTimeStamp], 0) FROM [AzMan_AzTask] 
  7848.     WHERE [ScopeID] = @parentID
  7849.  
  7850. Return(@@RowCount)
  7851.  
  7852. GO
  7853.  
  7854. IF EXISTS (SELECT name FROM sysobjects
  7855.      WHERE name = 'AzMan_SPD_SQLRole' and type = 'P')
  7856.     DROP PROCEDURE AzMan_SPD_SQLRole
  7857. GO
  7858.  
  7859. CREATE PROCEDURE AzMan_SPD_SQLRole
  7860. (
  7861. @Return             [int] output,
  7862. @SQLRoleName        [nvarchar] (64)     
  7863. )
  7864. AS
  7865.     DECLARE @Ret    [int]
  7866.     DECLARE @member [nvarchar] (64)
  7867.     
  7868.     DECLARE roleMember_cursor CURSOR
  7869.     FOR 
  7870.     (
  7871.         select u.name from sysusers u, sysusers g, sysmembers m
  7872.             where g.name = @SQLRoleName
  7873.                 and g.uid = m.groupuid
  7874.                 and g.issqlrole = 1
  7875.                 and u.uid = m.memberuid
  7876.     )
  7877.     OPEN roleMember_cursor
  7878.     FETCH NEXT FROM roleMember_cursor INTO @member
  7879.     WHILE @@FETCH_STATUS = 0
  7880.     BEGIN
  7881.       EXEC @Ret = sp_droprolemember @SQLRoleName, @member
  7882.       FETCH NEXT FROM roleMember_cursor INTO @member
  7883.     END
  7884.     Close roleMember_cursor
  7885.     DEALLOCATE roleMember_cursor
  7886.     
  7887.     Set @Return = -1
  7888.     
  7889.     Exec @Ret = sp_droprole @SQLRoleName
  7890.     
  7891.     if @Ret <> 0 
  7892.     Begin
  7893.         Set @return = -1 
  7894.     End
  7895.     Else
  7896.     Begin
  7897.         Set @return = 0 
  7898.     End
  7899.     
  7900.     Return @Return  
  7901.  
  7902. GO
  7903.  
  7904. IF EXISTS (SELECT name FROM sysobjects
  7905.      WHERE name = 'AzMan_SPD_All_SQLRole_ForObject' and type = 'P')
  7906.     DROP PROCEDURE AzMan_SPD_All_SQLRole_ForObject
  7907. GO
  7908.  
  7909. CREATE PROCEDURE AzMan_SPD_All_SQLRole_ForObject
  7910. (
  7911. @Return     [int] output,
  7912. @ID         [int],
  7913. @ObjectType [tinyint]
  7914. )
  7915. AS
  7916.     DECLARE @uid    [int]
  7917.     DECLARE @SQLRoleName [nvarchar] (64)
  7918.  
  7919.     Set @Return = 0
  7920.     
  7921.     SELECT @uid = 0
  7922.     
  7923.     Select @uid=[uid], @SQLRolename = [SQLRolename] 
  7924.     From [dbo].[Azman_SQLRole] 
  7925.     where 
  7926.       [ObjectID]    = @ID and
  7927.       [ObjectType]  = @ObjectType and
  7928.       [RoleType]    = 1
  7929.     
  7930.     IF @uid <> 0
  7931.     Begin
  7932.         Exec AzMan_SPD_SQLRole @Return output, @SQLRoleName
  7933.     End
  7934.     
  7935.     SELECT @uid = 0 
  7936.     Select @uid=[uid], @SQLRolename = [SQLRolename] 
  7937.     From [dbo].[Azman_SQLRole] 
  7938.     where 
  7939.       [ObjectID]    = @ID and
  7940.       [ObjectType]  = @ObjectType and
  7941.       [RoleType]    = 2
  7942.     
  7943.     IF @uid <> 0
  7944.     Begin
  7945.         Exec AzMan_SPD_SQLRole @Return output, @SQLRoleName
  7946.     End
  7947.     
  7948.     set @uid = 0
  7949.     Select @uid=[uid], @SQLRolename = [SQLRolename] 
  7950.     From [dbo].[Azman_SQLRole] 
  7951.     where 
  7952.       [ObjectID]    = @ID and
  7953.       [ObjectType]  = @ObjectType and
  7954.       [RoleType]    = 3
  7955.  
  7956.     IF @uid <> 0
  7957.     Begin
  7958.         Exec AzMan_SPD_SQLRole @Return output, @SQLRoleName
  7959.     End
  7960.  
  7961.     if @Return = 0 
  7962.     Begin
  7963.         DELETE AzMan_SQLRole WHERE [ObjectID] = @ID AND [ObjectType] = @ObjectType
  7964.         Set @Return = 0
  7965.     End
  7966.  
  7967. Done:
  7968.     Return @Return
  7969. GO
  7970.  
  7971. IF EXISTS (SELECT name FROM sysobjects
  7972.      WHERE name = 'AzMan_SPD_SQLRole_ForObject' and type = 'P')
  7973.     DROP PROCEDURE AzMan_SPD_SQLRole_ForObject
  7974. GO
  7975.  
  7976. CREATE PROCEDURE AzMan_SPD_SQLRole_ForObject
  7977. (
  7978. @Return     [int] output,
  7979. @ID         [int],
  7980. @ObjectType [tinyint],
  7981. @DeleteFlag [int]       -- bitwise pattern. 0x0001 for deleting only self, 0x0002 for deleting only children
  7982. )
  7983. AS
  7984.     SET NOCOUNT ON
  7985.     
  7986.     DECLARE @SQLRoleName [nvarchar] (64)
  7987.     Declare @AccessAtObjType [tinyint]    
  7988.     DECLARE @SaclIsOn [bit]
  7989.     Declare @DbName [nvarchar] (255)
  7990.     Set @SaclIsOn = 0
  7991.     
  7992.     Set @Return = -1
  7993.  
  7994.     -- such role deletion audit will be generated by the object deletion.
  7995.     -- so we don't care about SACL (second last parameter) here
  7996.     Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, @ObjectType, 0, @SaclIsOn output
  7997.     
  7998.     if @Return <> 1 
  7999.     Begin
  8000.         -- if the object is deleted we will ignore as we still want to delete all the roles for the object
  8001.         if @Return = -1168
  8002.         Begin
  8003.             Set @Return = 0
  8004.         End
  8005.         Else
  8006.         Begin
  8007.             if (@Return >= 2)
  8008.             Begin
  8009.                 Set @Return = -5 
  8010.             End
  8011.             goto Done
  8012.         End
  8013.     End
  8014.     
  8015.     -- our deletion flag will switch to delete all because we only need
  8016.     -- to make sure that the acting container object's roles are not deleted
  8017.     -- so that the user still has access
  8018.     -- if we are instructed to delete sub-container's roles
  8019.     if (@DeleteFlag & 2) <> 0
  8020.         begin
  8021.             -- for applications or stores, we also need to delete the sub-container's roles
  8022.             DECLARE @locReturn int -- we have to press on for this action. No rollback
  8023.             IF @ObjectType = 0
  8024.                 BEGIN
  8025.                     DECLARE @AppID int
  8026.                     DECLARE app_cursor CURSOR
  8027.                     FOR 
  8028.                     (
  8029.                         select App.ID FROM AzMan_AzApplication App WHERE App.StoreID = @ID
  8030.                     )
  8031.                     OPEN app_cursor
  8032.                     FETCH NEXT FROM app_cursor INTO @AppID
  8033.                     WHILE @@FETCH_STATUS = 0
  8034.                         BEGIN
  8035.                             -- now call recursively to delete the app's roles
  8036.                             EXEC AzMan_SPD_SQLRole_ForObject @locReturn output, @AppID, 1, 3
  8037.                             FETCH NEXT FROM app_cursor INTO @AppID
  8038.                         END
  8039.                     Close app_cursor
  8040.                     DEALLOCATE app_cursor
  8041.                 END
  8042.             ELSE IF @ObjectType = 1
  8043.                 BEGIN
  8044.                     DECLARE @ScopeID int
  8045.                     DECLARE scope_cursor CURSOR
  8046.                     FOR 
  8047.                     (
  8048.                         select Scope.ID FROM AzMan_AzScope Scope WHERE Scope.AppID = @ID
  8049.                     )
  8050.                     OPEN scope_cursor
  8051.                     FETCH NEXT FROM scope_cursor INTO @ScopeID
  8052.                     WHILE @@FETCH_STATUS = 0
  8053.                         BEGIN
  8054.                             -- now call recursively to delete the app's roles
  8055.                             EXEC AzMan_SPD_SQLRole_ForObject @locReturn output, @ScopeID, 4, 3
  8056.                             FETCH NEXT FROM scope_cursor INTO @ScopeID
  8057.                         END
  8058.                     Close scope_cursor
  8059.                     DEALLOCATE scope_cursor
  8060.                 END
  8061.         end
  8062.  
  8063.     -- if we are instructed to delete the self roles
  8064.     if (@DeleteFlag & 1) <> 0
  8065.         begin
  8066.             If Is_Member('db_owner') = 1 or Is_Member('db_securityadmin') = 1
  8067.             Begin
  8068.                 exec AzMan_SPD_All_SQLRole_ForObject @Return output , @ID, @ObjectType
  8069.             End
  8070.             else
  8071.             begin
  8072.                 Set @dbName = db_name()
  8073.                 Exec master.dbo.xp_AzManDeleteRole @Return output, @ID, @ObjectType, @dbName 
  8074.             End
  8075.         end
  8076.  
  8077. Done:
  8078.     SET NOCOUNT OFF
  8079.     Return @Return
  8080.     
  8081. GO
  8082.  
  8083. IF EXISTS (SELECT name FROM sysobjects
  8084.      WHERE name = 'AzMan_SPS_Get_ObjectSecurityOption' and type = 'P')
  8085.     DROP PROCEDURE AzMan_SPS_Get_ObjectSecurityOption
  8086. GO
  8087.  
  8088. CREATE PROCEDURE AzMan_SPS_Get_ObjectSecurityOption
  8089. (
  8090. @Return [int] output,
  8091. @AccessAtObjType [tinyint] output,
  8092. @ID [int],
  8093. @ObjectType [tinyint],
  8094. @UserType [int] output
  8095. )
  8096. AS
  8097.     DECLARE @SaclIsOn [bit]
  8098.     Set @SaclIsOn = 0
  8099.     
  8100.     SET @Return = -5
  8101.     SET @UserType = 0   -- illegal users
  8102.     
  8103.     IF @ObjectType = 0 OR @ObjectType = 1 OR @ObjectType = 4
  8104.         BEGIN
  8105.             -- no need to know that SACL (Second last parameter)
  8106.             Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, @ObjectType, 0, @SaclIsOn output
  8107.             IF @Return >= 1 AND @Return <= 3
  8108.                 BEGIN
  8109.                     SET @UserType = @Return
  8110.                     SET @Return = 0
  8111.                 END
  8112.         END
  8113.         
  8114.     RETURN @Return
  8115.     
  8116. GO
  8117.  
  8118. IF EXISTS (SELECT name FROM sysobjects
  8119.         WHERE name = 'AzMan_SP_Grant_Permission' and type = 'P')
  8120.     DROP PROCEDURE AzMan_SP_Grant_Permission
  8121. GO
  8122.  
  8123. CREATE PROCEDURE AzMan_SP_Grant_Permission
  8124. AS
  8125.     grant execute on AzMan_SP_GetSQLRole                to  public
  8126.     grant execute on AzMan_SPI_SQLRole                  to public
  8127.     --AzMan_SPI_Add_User_To_SQLRole
  8128.     grant execute on AzMan_SPI_Add_User_To_Role         to public
  8129.     --AzMan_SPD_User_From_SQLRole
  8130.     grant execute on AzMan_SPD_User_From_Role           to public
  8131.     --AzMan_SP_Get_Object_Path_For_Container
  8132.     --AzMan_SP_Get_Object_Path
  8133.     --AzMan_SP_AccessCheck_For_Container
  8134.     --AzMan_SP_AccessCheck
  8135.     grant execute on AzMan_SPS_Get_StoreIDByName              to public
  8136.     --AzMan_SP_Check_Dup_Task
  8137.     --AzMan_SP_Check_Dup_RoleAssignment
  8138.     --AzMan_SP_Check_Dup_Application
  8139.     --AzMan_SP_Check_Dup_Scope
  8140.     --AzMan_SP_Check_Dup_Operation
  8141.     --AzMan_SP_Check_Dup_Group_For_Given_Parent
  8142.     --AzMan_SP_Check_Dup_Group
  8143.     grant execute on AzMan_SPI_AzAuthorizationStore     to public
  8144.     grant execute on AzMan_SPI_AzApplication            to public
  8145.     grant execute on AzMan_SPU_AzApplication            to public
  8146.     grant execute on AzMan_SPI_AzScope                  to public
  8147.     grant execute on AzMan_SPI_AzOperation              to public
  8148.     grant execute on AzMan_SPI_AzApplicationGroup       to public   
  8149.     grant execute on AzMan_SPI_AzTask                   to public
  8150.     --AzMan_SPI_AzTask_Single_Operation
  8151.     --AzMan_SPD_AzTask_Single_Operation
  8152.     grant execute on AzMan_SPI_AzTask_Multi_Operations  to public
  8153.     --AzMan_SPI_AzRoleAssignment_Single_Operation
  8154.     --AzMan_SPD_AzRoleAssignment_Single_Operation
  8155.     grant execute on AzMan_SPI_AzRoleAssignment_Multi_Operations    to public
  8156.     --AzMan_SPI_AzTask_Single_Task
  8157.     --AzMan_SPD_AzTask_Single_Task
  8158.     grant execute on AzMan_SPI_AzTask_Multi_Tasks       to public
  8159.     --AzMan_SPI_AzRoleAssignment_Single_Task
  8160.     --AzMan_SPD_AzRoleAssignment_Single_Task
  8161.     grant execute on AzMan_SPI_AzRoleAssignment_Multi_Tasks to public
  8162.     grant execute on AzMan_SPI_AzRoleAssignment             to public
  8163.     grant execute on AzMan_SPU_AzAuthorizationStore         to public
  8164.     grant execute on AzMan_SPU_AzScope                      to public
  8165.     grant execute on AzMan_SPU_AzOperation                  to public
  8166.     grant execute on AzMan_SPU_AzApplicationGroup           to public
  8167.     grant execute on AzMan_SPU_AzTask                       to public
  8168.     grant execute on AzMan_SPU_AzRoleAssignment             to public
  8169.     grant execute on AzMan_SPIU_AzApplicationGroup_LDAPQuery to public
  8170.     grant execute on AzMan_SPIU_Bizrule                      to public
  8171.     grant execute on AzMan_SPIU_AzApplicationGroup_Bizrule   to public
  8172.     grant execute on AzMan_SPIU_AzTask_Bizrule               to public  
  8173.     --AzMan_SPI_AzApplicationGroup_Single_SidMember
  8174.     --AzMan_SPD_AzApplicationGroup_Single_SidMember
  8175.     grant execute on AzMan_SPI_AzApplicationGroup_Multi_SidMembers  to public
  8176.     grant execute on AzMan_SPI_AzApplicationGroup_Multi_SidNonMembers   to public
  8177.     --AzMan_SPI_AzApplicationGroup_Single_AppMember
  8178.     --AzMan_SPD_AzApplicationGroup_Single_AppMember
  8179.     grant execute on AzMan_SPI_AzApplicationGroup_Multi_AppMembers  to public
  8180.     grant execute on AzMan_SPI_AzApplicationGroup_Multi_AppNonMembers   to public
  8181.     --AzMan_SPI_AzRoleAssignment_Single_SidMember
  8182.     --AzMan_SPD_AzRoleAssignment_Single_SidMember
  8183.     grant execute on AzMan_SPI_AzRoleAssignment_Multi_SidMembers    to public
  8184.     -- AzMan_SPI_AzRoleAssignment_Single_AppMember
  8185.     -- AzMan_SPD_AzRoleAssignment_Single_AppMember
  8186.     grant execute on AzMan_SPI_AzRoleAssignment_Multi_AppMembers    to public
  8187.     -- spDrop_AzMan_Table
  8188.     grant execute on AzMan_SPS_Get_AzAuthorizationStoreByName       to public
  8189.     grant execute on AzMan_SPS_Enum_AzApplications                  to public
  8190.     grant execute on AzMan_SPS_Get_AzApplication                    to public
  8191.     --AzMan_SPS_Get_AzApplication_AppData
  8192.     --AzMan_SPS_Get_AzScope_AppData
  8193.     --AzMan_SPS_Get_AzAuthorizationStore_AppData
  8194.     grant execute on AzMan_SPS_Enum_AzScope                         to public
  8195.     grant execute on AzMan_SPS_Enum_AzApplicationGroup              to public
  8196.     grant execute on AzMan_SPS_Enum_AzTask                          to public
  8197.     grant execute on AzMan_SPS_Enum_AzTask_Operations               to public
  8198.     grant execute on AzMan_SPS_Enum_AzTask_Tasks                    to public   
  8199.     grant execute on AzMan_SPS_Enum_AzRoleAssignment_Tasks          to public
  8200.     grant execute on AzMan_SPS_Enum_AzRoleAssignment_Operations     to public
  8201.     grant execute on AzMan_SPS_Enum_AzRoleAssignment                to public
  8202.     grant execute on AzMan_SPS_Get_AzApplicationGroup               to public
  8203.     grant execute on AzMan_SPS_Get_AzApplicationGroup_BizruleInfo   to public
  8204.     grant execute on AzMan_SPS_Get_AzTask_BizruleInfo               to public   
  8205.     grant execute on AzMan_SPS_Get_AzApplicationGroup_LDAPQuery     to public
  8206.     grant execute on AzMan_SPS_Enum_AzApplicationGroup_SIDMembers   to public
  8207.     grant execute on AzMan_SPS_Enum_AzApplicationGroup_SIDNonMembers to public
  8208.     grant execute on AzMan_SPS_Enum_AzApplicationGroup_AppMembers   to public
  8209.     grant execute on AzMan_SPS_Enum_AzApplicationGroup_AppNonMembers    to public
  8210.     grant execute on AzMan_SPS_Enum_AzRoleAssignment_SIDMembers     to public
  8211.     grant execute on AzMan_SPS_Enum_AzRoleAssignment_AppMembers     to public
  8212.     grant execute on AzMan_SPS_Get_AzScope                          to public
  8213.     grant execute on AzMan_SPS_Enum_AzOperation                     to public
  8214.     grant execute on AzMan_SPS_Get_AzOperation                      to public
  8215.     grant execute on AzMan_SPS_Get_AzTask                           to public
  8216.     grant execute on AzMan_SPS_Get_AzRoleAssignment                 to public
  8217.     grant execute on AzMan_SPD_AzOperation                          to public
  8218.     grant execute on AzMan_SPD_AzScope                              to public
  8219.     grant execute on AzMan_SPD_AzApplication                        to public
  8220.     grant execute on AzMan_SPD_AzAuthorizationStore                 to public
  8221.     grant execute on AzMan_SPD_AzApplicationGroup                   to public
  8222.     grant execute on AzMan_SPD_AzTask                               to public
  8223.     grant execute on AzMan_SPD_AzRoleAssignment                     to public
  8224.     grant execute on AzMan_SPD_SQLRole_ForObject                    to public
  8225.     grant execute on AzMan_SPS_Enum_AzAuthorizationStoreUpdateTimeStamp to public
  8226.     grant execute on AzMan_SPS_Enum_AzApplicationUpdateTimeStamp to public
  8227.     grant execute on AzMan_SPS_Enum_AzScopeUpdateTimeStamp to public
  8228.     grant execute on AzMan_SPS_Enum_AzApplicationGroupUpdateTimeStamp to public
  8229.     grant execute on AzMan_SPS_Enum_AzOperationUpdateTimeStamp to public
  8230.     grant execute on AzMan_SPS_Enum_AzRoleAssignmentUpdateTimeStamp to public
  8231.     grant execute on AzMan_SPS_Enum_AzTaskUpdateTimeStamp to public
  8232.     grant execute on AzMan_SP_GenerateObjectAudit                   to public
  8233.     grant execute on AzMan_SP_GenerateMemberAudit                   to public
  8234.     grant execute on AzMan_SP_GenerateGenericAudit                  to public
  8235.     grant execute on AzMan_SPS_Get_ObjectSecurityOption             to public
  8236.     grant execute on AzMan_SPS_Get_DBOwners                         to public
  8237.     grant execute on AzMan_SPS_Get_Role_For_Object                  to public
  8238.     grant execute on AzMan_SP_GetRoleMemberCount                    to public
  8239.     
  8240.     grant execute on AzMan_SPI_SQLRole_From_XP                      to dbo
  8241.     grant execute on AzMan_SPD_All_SQLRole_ForObject                to dbo
  8242.     grant execute on AzMan_SPD_User_From_SQLRole_From_XP            to dbo
  8243.     grant execute on AzMan_SPI_Add_User_To_SQLRole_From_XP          to dbo
  8244.     grant execute on AzMan_SPU_SqlRoleUpdated                       to public
  8245.     grant execute on AzMan_SPI_Create_SqlRole_For_Object            to public
  8246.     
  8247. GO  
  8248.  
  8249.  
  8250.