Why my verify system doesn't work?

Hi guys! I am a new developer forum user. And I have a problem with my verify system. I want to make an admin panel that has 4 level defense system. Here is my defense if you want to use it too.

1 Level defense:
A simple whitelist script with checking username. If username matches when it enables admin panel.

2 Level defense:
Similar as 1 level defense but it kicking. If admin panel UI enabled but the username doesn’t match then it kicks the player.

3 Level defense:
Verify system. With what I have a problem. There a UI that asks you to enter your admin username and password. If a player fails 3 times he gets kicked.

4 Level defense:
Like a second level. If a player verified but the username doesn’t match he getting kicked.

Problem:
I have a problem with the third level defense. When I type in the username and password my script thinks it doesn’t correct. In output it doesn’t give any errors. Here the code.

--Options

local user = {}
local password = "testpass"
local fail = censored

user.Username = {
	"alex";
	"yes";
}
--Script
script.Parent.MouseButton1Down:Connect(function()
	if script.Parent.Parent.User.Text == user.Username and script.Parent.Parent.Pass.Text == password then
		script.Parent:Destroy()    -- If it works
	else
		censored
	end
end)

--Attempt check

Censored

I don’t ask you to write the entire script. Just can’t get why my script doesn’t see a username. Thank you for your help. :slight_smile:

Hey. Is this script a ServerScript or a LocalScript?

Try printing the text of the textboxes when you click the button and see what it outputs

I would rather do it in the server instead of the client due to exploiters bypassing it

That script written in the local script.

It’s wont see what writted in text box.

Its output the text that i write.

false and what do you mean also exploiters can actually access the other player’s gui just by typing this script

local Player = Players:FindFirstChild("someName")
local PlayerGui = Player:FindFirstChild("PlayerGui")

print(PlayerGui.someGui.Textsome.Text) -- and bam prints name
1 Like

I’m still reading though everything and I know you didn’t ask about this but you should really consider getting your player info from their UserId not their username, in case it changes. You could honestly get away with only having someone type in a password if you verify their UserId matches one in your storage of authorized people.

I know that exploiters can edit local scripts. But if i do it ins server script that wont check what written in text box.

Maybe try sending an event with the users input from the client to the server, so only your input is on the client.

Thank you for it. I will take it.

your not getting my point and that point is that you type in the textbox which means that it can be seen by exploiters and why do you need a verifying system when you completely have to just make a table with the name within it

Oh. Now i get it. Thank you for help.

Hold on. (I agree with everything you Devs are saying that AdminPanel should rely totally on Server) But

Are u really sure that Client1 can access the PlayerGui of Client2 from ClientSide??

local Player = Players:FindFirstChild("someName")
local PlayerGui = Player:FindFirstChild("PlayerGui")

print(PlayerGui.someGui.Textsome.Text) -- and bam prints name

Right now Im doing that test on Studio, and Server can access the ClientGui but another player cannot. Pls explain more about what u said

its true text’s do replicate so better be careful with your gui’s next time just change the name of what player you want and the gui props and it would work

That explains nothing… I know what to do to secure things, thats not the problem. But you stated that Client1 can get what Client2 has on its PlayerGui. And Im almost sure that is impossible. Right now Im doing the test, and no, Client1 cant access Client2’s PlayerGui. Pls show some evidence

Yeah that’s impossible unless it’s submitted to the server or by firing a series of events. Which would require all the input to already be submitted before firing.

1 Like

Yup, by firing events clients can get anything if theres no secutiry checks on the server functions. Its just that:

Client Side:

local Player = Players:FindFirstChild("someName")
local PlayerGui = Player:FindFirstChild("PlayerGui")

print(PlayerGui.someGui.Textsome.Text)

Makes no sense for me. Thats simply false

1 Like

Do not give misinformation .Thats false , A Client can’t access another Client’s PlayerGui.

2 Likes