What is going on here is treating Python like it's a spoken language.
What you intend with:
if username == 'admin' or 'Admin' or 'ADMIN':
# stuff
Is to mean:
if <condition>:
The "condition" being if username is 'admin', 'Admin', or 'ADMIN'.
But that's not how python works. Python reads
if username == 'admin' or 'Admin' or 'ADMIN':
# code
as
if <condition 1> or <condition 2> or <condition 3>:
# code
--
Condition 1: username == 'admin'
is FALSE.
--
Condition 2: 'Admin'
is TRUE. This is because 'Admin' is a string literal object, which exists, and is non-zero, not null, and not empty, and therefore true.
This is like going
myString = "any string"
if myString:
# code is executed because myString is not empty.
But instead you're doing
if 'my string':
# this code would run.
--
Condition 3: 'ADMIN'
is TRUE, for the same reason Condition 2 is TRUE.
--
What you have going on here is that the if
condition is always true, no matter was is typed. Because
if username == 'admin' or 'Admin' or 'ADMIN':
# code
Evaluates to
if FALSE or TRUE or TRUE:
# code
And, therefore, will always evaluate to true and print whatever is in the username
variable, even if it's not 'admin'.