Is it possible to read a system tag in a template and see the value in the designer in run mode?
I am trying to read the [System].Client.User.RoleString, but in the designer in run mode it gives me a “None” value eventhough the tag has “Administrator” value?
How did you bind it? Works for me.
Does it work in the designer?
I used below concept
server = "Ignition OPC UA Server"
path = "[SLCSim]_Meta:N7/N7:0"
qualifiedValue = system.opc.readValue(server, path)
print "Value: " + str (qualifiedValue.getValue())
print "Quality: " + qualifiedValue.getQuality().toString()
print "Timestamp: " + qualifiedValue.getTimestamp().toString()
But now I have changed my code to do the following what seems to work.
roles = system.user.getRoles(“”)
for role in roles:
if role == “Administrator”:
RoleAdmin = True
else:
RoleAdmin = False
Do you need the true false, or just the role displayed?
Actual my code is not working. it will always result in True because I have a role that is “Administrator”
What I am trying to accomplish is to check in the template if the current user has a role as
“Administrator”. This can be a true/false flag.
That was the reason I was trying to read the [System]Client.User.Rolestring.Value
But why do you need to know the users role? also you can test with a generic user you create.
What are you trying to do/hide/ etc…?
The reason is that if the user has a role status of “Administrator”
the user will be able to change the size of a circle and a bunch of more stuff, but if the user does not have that status of “Administrator” then he will not be able to see the components to change the size of a circle and a whole bunch of other stuff.
So the role will be used to hide or unhide components.
After some digging I am getting closer. I was on the wrong track. Now I have this code but the line
Roles = user.getRoles fails? I am not sure why
userName = system.security.getUsername()
print “userName : " + userName
if userName == “Ignition”:
user = system.user.getUser(”", userName)
Roles = user.getRoles
When you add code, you need to use the pre-formatted block otherwise the text loses all formatting ![]()
Also,
We're not sure why either, as you haven't given us the error message ![]()
In scripting, to get the currently logged in user's roles you can use:
system.security.getRoles()
system.user.getUser requires the user source, you can't just leave this blank.
If you want to use it in an expression though, you should be able to read the tag [System]Client/User/RolesString as you said. You had dots instead of slashes though?
This is the error I get trying to read that tag path with dots instead:
![]()
Thank you Nick.
It works.
That was much simpler then what I was doing.
Also thank you for the code formatting tip. I am new to this forum and this will help me.
Marcel.