YAFLogo

RoloTomasi
  • RoloTomasi
  • 56% (Neutral)
  • YAF Camper Topic Starter
12 years ago
Hello.

I don't understand the code (in quote):

We check for existing records with UserID

IF @IsGuest = 0 AND NOT EXISTS(select top 1 1 from [{databaseOwner}].[{objectQualifier}ActiveAccess] WITH(NOLOCK) WHERE UserID = @UserID)

and if no exist fill table for current user using guest access rights.

But real rights for current user must be write bellow (in qoute 147-190 lines).

Instead, for current user always will be write guest access rights.


	-- ensure that no duplicates and that the guest access rights always present in the access table 
	 if not exists (select top 1 UserID	from [{databaseOwner}].[{objectQualifier}ActiveAccess] where UserID = @GuestID)
			begin				
			insert into [{databaseOwner}].[{objectQualifier}ActiveAccess](
			UserID,
			BoardID,
			ForumID,
			IsAdmin, 
			IsForumModerator,
			IsModerator,
			IsGuestX,
			LastActive, 
			ReadAccess,
			PostAccess,
			ReplyAccess,
			PriorityAccess,
			PollAccess,
			VoteAccess,	
			ModeratorAccess,
			EditAccess,
			DeleteAccess,
			UploadAccess,
			DownloadAccess)
			select 
			UserID, 
			@BoardID, 
			ForumID, 
			IsAdmin,
			IsForumModerator,
			IsModerator,
			@IsGuest,
			@CurrentTime,
			ReadAccess,
			(CONVERT([bit],sign([PostAccess]&(2)),(0))),
			(CONVERT([bit],sign([ReplyAccess]&(4)),(0))),
			(CONVERT([bit],sign([PriorityAccess]&(8)),(0))),
			(CONVERT([bit],sign([PollAccess]&(16)),(0))),
			(CONVERT([bit],sign([VoteAccess]&(32)),(0))),
			(CONVERT([bit],sign([ModeratorAccess]&(64)),(0))),
			(CONVERT([bit],sign([EditAccess]&(128)),(0))),
			(CONVERT([bit],sign([DeleteAccess]&(256)),(0))),
			(CONVERT([bit],sign([UploadAccess]&(512)),(0))),
			(CONVERT([bit],sign([DownloadAccess]&(1024)),(0)))			
			from [{databaseOwner}].[{objectQualifier}vaccess] 
			where UserID = @GuestID			
	end 

	IF @IsGuest = 0 AND NOT EXISTS(select top 1 1 from [{databaseOwner}].[{objectQualifier}ActiveAccess] WITH(NOLOCK) WHERE UserID = @UserID)
	BEGIN
		-- no permissions... use guest access instead
		insert into [{databaseOwner}].[{objectQualifier}ActiveAccess](
			UserID,
			BoardID,
			ForumID,
			IsAdmin, 
			IsForumModerator,
			IsModerator,
			IsGuestX,
			LastActive, 
			ReadAccess,
			PostAccess,
			ReplyAccess,
			PriorityAccess,
			PollAccess,
			VoteAccess,	
			ModeratorAccess,
			EditAccess,
			DeleteAccess,
			UploadAccess,
			DownloadAccess)
			select 
			@UserID, 
			@BoardID, 
			ForumID, 
			IsAdmin,
			IsForumModerator,
			IsModerator,
			0,
			@CurrentTime,
			ReadAccess,
			(CONVERT([bit],sign([PostAccess]&(2)),(0))),
			(CONVERT([bit],sign([ReplyAccess]&(4)),(0))),
			(CONVERT([bit],sign([PriorityAccess]&(8)),(0))),
			(CONVERT([bit],sign([PollAccess]&(16)),(0))),
			(CONVERT([bit],sign([VoteAccess]&(32)),(0))),
			(CONVERT([bit],sign([ModeratorAccess]&(64)),(0))),
			(CONVERT([bit],sign([EditAccess]&(128)),(0))),
			(CONVERT([bit],sign([DeleteAccess]&(256)),(0))),
			(CONVERT([bit],sign([UploadAccess]&(512)),(0))),
			(CONVERT([bit],sign([DownloadAccess]&(1024)),(0)))			
		from [{databaseOwner}].[{objectQualifier}vaccess] 
		where UserID = @GuestID				
	END	
	
	-- get previous visit
	if  @IsGuest = 0	 begin
		select @PreviousVisit = LastVisit from [{databaseOwner}].[{objectQualifier}User] where UserID = @UserID
	end
	
	-- update last visit
	update [{databaseOwner}].[{objectQualifier}User] set 
		LastVisit = @CurrentTime,
		IP = @IP
	where UserID = @UserID

	-- find missing ForumID/TopicID
	if @MessageID is not null begin
		select
			@CategoryID = c.CategoryID,
			@ForumID = b.ForumID,
			@TopicID = b.TopicID
		from
			[{databaseOwner}].[{objectQualifier}Message] a
			inner join [{databaseOwner}].[{objectQualifier}Topic] b on b.TopicID = a.TopicID
			inner join [{databaseOwner}].[{objectQualifier}Forum] c on c.ForumID = b.ForumID
			inner join [{databaseOwner}].[{objectQualifier}Category] d on d.CategoryID = c.CategoryID
		where
			a.MessageID = @MessageID and
			d.BoardID = @BoardID
	end
	else if @TopicID is not null begin
		select 
			@CategoryID = b.CategoryID,
			@ForumID = a.ForumID 
		from 
			[{databaseOwner}].[{objectQualifier}Topic] a
			inner join [{databaseOwner}].[{objectQualifier}Forum] b on b.ForumID = a.ForumID
			inner join [{databaseOwner}].[{objectQualifier}Category] c on c.CategoryID = b.CategoryID
		where 
			a.TopicID = @TopicID and
			c.BoardID = @BoardID
	end
	else if @ForumID is not null begin
		select
			@CategoryID = a.CategoryID
		from
			[{databaseOwner}].[{objectQualifier}Forum] a
			inner join [{databaseOwner}].[{objectQualifier}Category] b on b.CategoryID = a.CategoryID
		where
			a.ForumID = @ForumID and
			b.BoardID = @BoardID
	end
	-- update active
	-- ensure that access right are in place		
		if not exists (select top 1 UserID	from [{databaseOwner}].[{objectQualifier}ActiveAccess] WITH(NOLOCK) 
			where UserID = @UserID )		
			begin
			insert into [{databaseOwner}].[{objectQualifier}ActiveAccess](
			UserID,
			BoardID,
			ForumID,
			IsAdmin, 
			IsForumModerator,
			IsModerator,
			IsGuestX,
			LastActive, 
			ReadAccess,
			PostAccess,
			ReplyAccess,
			PriorityAccess,
			PollAccess,
			VoteAccess,	
			ModeratorAccess,
			EditAccess,
			DeleteAccess,
			UploadAccess,
			DownloadAccess)
			select 
			UserID, 
			@BoardID, 
			ForumID, 
			IsAdmin,
			IsForumModerator,
			IsModerator,
			@IsGuest,
			@CurrentTime,
			ReadAccess,
			(CONVERT([bit],sign([PostAccess]&(2)),(0))),
			(CONVERT([bit],sign([ReplyAccess]&(4)),(0))),
			(CONVERT([bit],sign([PriorityAccess]&(8)),(0))),
			(CONVERT([bit],sign([PollAccess]&(16)),(0))),
			(CONVERT([bit],sign([VoteAccess]&(32)),(0))),
			(CONVERT([bit],sign([ModeratorAccess]&(64)),(0))),
			(CONVERT([bit],sign([EditAccess]&(128)),(0))),
			(CONVERT([bit],sign([DeleteAccess]&(256)),(0))),
			(CONVERT([bit],sign([UploadAccess]&(512)),(0))),
			(CONVERT([bit],sign([DownloadAccess]&(1024)),(0)))			
			from [{databaseOwner}].[{objectQualifier}vaccess] 
			where UserID = @UserID
			end

sorry for my english.

Sponsor
RoloTomasi
  • RoloTomasi
  • 56% (Neutral)
  • YAF Camper Topic Starter
12 years ago
may be something like this:



	-- ensure that no duplicates and that the guest access rights always present in the access table 
	 if not exists (select top 1 UserID	from [{databaseOwner}].[{objectQualifier}ActiveAccess] where UserID = @GuestID)
			begin				
			insert into [{databaseOwner}].[{objectQualifier}ActiveAccess](
			UserID,
			BoardID,
			ForumID,
			IsAdmin, 
			IsForumModerator,
			IsModerator,
			IsGuestX,
			LastActive, 
			ReadAccess,
			PostAccess,
			ReplyAccess,
			PriorityAccess,
			PollAccess,
			VoteAccess,	
			ModeratorAccess,
			EditAccess,
			DeleteAccess,
			UploadAccess,
			DownloadAccess)
			select 
			UserID, 
			@BoardID, 
			ForumID, 
			IsAdmin,
			IsForumModerator,
			IsModerator,
			@IsGuest,
			@CurrentTime,
			ReadAccess,
			(CONVERT([bit],sign([PostAccess]&(2)),(0))),
			(CONVERT([bit],sign([ReplyAccess]&(4)),(0))),
			(CONVERT([bit],sign([PriorityAccess]&(8)),(0))),
			(CONVERT([bit],sign([PollAccess]&(16)),(0))),
			(CONVERT([bit],sign([VoteAccess]&(32)),(0))),
			(CONVERT([bit],sign([ModeratorAccess]&(64)),(0))),
			(CONVERT([bit],sign([EditAccess]&(128)),(0))),
			(CONVERT([bit],sign([DeleteAccess]&(256)),(0))),
			(CONVERT([bit],sign([UploadAccess]&(512)),(0))),
			(CONVERT([bit],sign([DownloadAccess]&(1024)),(0)))			
			from [{databaseOwner}].[{objectQualifier}vaccess] 
			where UserID = @GuestID			
	end 

		-- update active
	-- ensure that access right are in place		
		if not exists (select top 1 UserID	from [{databaseOwner}].[{objectQualifier}ActiveAccess] WITH(NOLOCK) 
			where UserID = @UserID )		
			begin
			insert into [{databaseOwner}].[{objectQualifier}ActiveAccess](
			UserID,
			BoardID,
			ForumID,
			IsAdmin, 
			IsForumModerator,
			IsModerator,
			IsGuestX,
			LastActive, 
			ReadAccess,
			PostAccess,
			ReplyAccess,
			PriorityAccess,
			PollAccess,
			VoteAccess,	
			ModeratorAccess,
			EditAccess,
			DeleteAccess,
			UploadAccess,
			DownloadAccess)
			select 
			UserID, 
			@BoardID, 
			ForumID, 
			IsAdmin,
			IsForumModerator,
			IsModerator,
			@IsGuest,
			@CurrentTime,
			ReadAccess,
			(CONVERT([bit],sign([PostAccess]&(2)),(0))),
			(CONVERT([bit],sign([ReplyAccess]&(4)),(0))),
			(CONVERT([bit],sign([PriorityAccess]&(8)),(0))),
			(CONVERT([bit],sign([PollAccess]&(16)),(0))),
			(CONVERT([bit],sign([VoteAccess]&(32)),(0))),
			(CONVERT([bit],sign([ModeratorAccess]&(64)),(0))),
			(CONVERT([bit],sign([EditAccess]&(128)),(0))),
			(CONVERT([bit],sign([DeleteAccess]&(256)),(0))),
			(CONVERT([bit],sign([UploadAccess]&(512)),(0))),
			(CONVERT([bit],sign([DownloadAccess]&(1024)),(0)))			
			from [{databaseOwner}].[{objectQualifier}vaccess] 
			where UserID = @UserID
			end

	IF @IsGuest = 0 AND NOT EXISTS(select top 1 1 from [{databaseOwner}].[{objectQualifier}ActiveAccess] WITH(NOLOCK) WHERE UserID = @UserID)
	BEGIN
		-- no permissions... use guest access instead
		insert into [{databaseOwner}].[{objectQualifier}ActiveAccess](
			UserID,
			BoardID,
			ForumID,
			IsAdmin, 
			IsForumModerator,
			IsModerator,
			IsGuestX,
			LastActive, 
			ReadAccess,
			PostAccess,
			ReplyAccess,
			PriorityAccess,
			PollAccess,
			VoteAccess,	
			ModeratorAccess,
			EditAccess,
			DeleteAccess,
			UploadAccess,
			DownloadAccess)
			select 
			@UserID, 
			@BoardID, 
			ForumID, 
			IsAdmin,
			IsForumModerator,
			IsModerator,
			0,
			@CurrentTime,
			ReadAccess,
			(CONVERT([bit],sign([PostAccess]&(2)),(0))),
			(CONVERT([bit],sign([ReplyAccess]&(4)),(0))),
			(CONVERT([bit],sign([PriorityAccess]&(8)),(0))),
			(CONVERT([bit],sign([PollAccess]&(16)),(0))),
			(CONVERT([bit],sign([VoteAccess]&(32)),(0))),
			(CONVERT([bit],sign([ModeratorAccess]&(64)),(0))),
			(CONVERT([bit],sign([EditAccess]&(128)),(0))),
			(CONVERT([bit],sign([DeleteAccess]&(256)),(0))),
			(CONVERT([bit],sign([UploadAccess]&(512)),(0))),
			(CONVERT([bit],sign([DownloadAccess]&(1024)),(0)))			
		from [{databaseOwner}].[{objectQualifier}vaccess] 
		where UserID = @GuestID				
	END
	-- get previous visit
	if  @IsGuest = 0	 begin
		select @PreviousVisit = LastVisit from [{databaseOwner}].[{objectQualifier}User] where UserID = @UserID
	end
	
	-- update last visit
	update [{databaseOwner}].[{objectQualifier}User] set 
		LastVisit = @CurrentTime,
		IP = @IP
	where UserID = @UserID

	-- find missing ForumID/TopicID
	if @MessageID is not null begin
		select
			@CategoryID = c.CategoryID,
			@ForumID = b.ForumID,
			@TopicID = b.TopicID
		from
			[{databaseOwner}].[{objectQualifier}Message] a
			inner join [{databaseOwner}].[{objectQualifier}Topic] b on b.TopicID = a.TopicID
			inner join [{databaseOwner}].[{objectQualifier}Forum] c on c.ForumID = b.ForumID
			inner join [{databaseOwner}].[{objectQualifier}Category] d on d.CategoryID = c.CategoryID
		where
			a.MessageID = @MessageID and
			d.BoardID = @BoardID
	end
	else if @TopicID is not null begin
		select 
			@CategoryID = b.CategoryID,
			@ForumID = a.ForumID 
		from 
			[{databaseOwner}].[{objectQualifier}Topic] a
			inner join [{databaseOwner}].[{objectQualifier}Forum] b on b.ForumID = a.ForumID
			inner join [{databaseOwner}].[{objectQualifier}Category] c on c.CategoryID = b.CategoryID
		where 
			a.TopicID = @TopicID and
			c.BoardID = @BoardID
	end
	else if @ForumID is not null begin
		select
			@CategoryID = a.CategoryID
		from
			[{databaseOwner}].[{objectQualifier}Forum] a
			inner join [{databaseOwner}].[{objectQualifier}Category] b on b.CategoryID = a.CategoryID
		where
			a.ForumID = @ForumID and
			b.BoardID = @BoardID
	end
	
bbobb
  • bbobb
  • 100% (Exalted)
  • YAF Developer
12 years ago
You're wrong:-d . But I fixed the logic as it should be.