Show/Hide page if

Summary

Hi,
I wonder if there is a way to show a page, if a condition is true? For example initially in my app there should be an input field. If the user types in a specific word in this field (password), the content of the app should be displayed. If the password was wrong, the content should still be hidden.

Actual behavior:

I tried to solve this with the multipage method, but as I know there will always be displayed the sidebar, where a user can get to the site, without entering the right password.
I also don’t need a full user sign-in. I would like to give the users a code which they have to enter in order to see the content.

Thanks in advance!

To the best of my knowledge, you cannot hide the page, unless you implement it yourself in some sort of selector in the sidebar (st.radio or st.selectbox). You can subscribe to / upvote this issue, although I think it’s already on the roadmap anyway.

In the meantime, if you don’t mind letting the user know that a page exists in the first place, you could restrict the page with st.stop at the top of the page, like:

if not <authentication condition>:
    st.warning("**Access is restricted. Sorry!**")
    st.stop()

Dear moxinator,
You can use session states to reach your target.

simply:

 name=st.text_input('your name', 'enter')

 if name=='Sina':
     st.session_state['state']=1
 else:
     st.session_state['state']=2
 
 if st.session_state['state']==1:
     st.write('Hello Sina')
 else:
     st.write("I don't recognize you")

Hope this helps.

simple but straight forward! This is doing it for my use case, thanks!

1 Like