Sign up to take part
Registered users can ask their own questions, contribute to discussions, and be part of the Community!
Registered users can ask their own questions, contribute to discussions, and be part of the Community!
Hi all,
I'm making a webapp with Dash.
I'd like to make only parts of a dataframe visible to certain users, depending on permissions.
I've followed this to get the current user https://doc.dataiku.com/dss/latest/webapps/security.html#dash-webapp
and defined a dictionary like
user_permissions = {
'user.name':['School'],
....
}
I'd then like to do
if user in user_permissions:
df = df[df['_group'].str.contains(('|'.join(user_permissions[user])))]
but I'm not sure how to use get `user` from the function `update_output_div`. Could anyone help please? Thanks in advance!
Operating system used: Mac OSX
Hi @meevans1,
You can get the username from the "authIdentifier" key in the "auth_info_brower" dict.
Here's a complete example:
import dataiku
from dash import dcc, html, Input, Output
from flask import request
user_permissions = {
'user1': ['School'],
'user2': ['Foo', 'Bar']
}
app.layout = html.Div([
html.H6('Change the value in the text box to see callbacks in action!'),
html.Div([
'Input: ',
dcc.Input(id='my-input', value='initial value', type='text')
]),
html.Br(),
html.Div(id='my-output')
])
@app.callback(
Output(component_id='my-output', component_property='children'),
Input(component_id='my-input', component_property='value')
)
def update_output_div(input_value):
request_headers = dict(request.headers)
auth_info_brower = dataiku.api_client().get_auth_info_from_browser_headers(request_headers)
user = auth_info_brower['authIdentifier']
if user in user_permissions:
return '|'.join(user_permissions[user])
else:
return 'User not authorized'
Thanks,
Zach
Hi @meevans1,
You can get the username from the "authIdentifier" key in the "auth_info_brower" dict.
Here's a complete example:
import dataiku
from dash import dcc, html, Input, Output
from flask import request
user_permissions = {
'user1': ['School'],
'user2': ['Foo', 'Bar']
}
app.layout = html.Div([
html.H6('Change the value in the text box to see callbacks in action!'),
html.Div([
'Input: ',
dcc.Input(id='my-input', value='initial value', type='text')
]),
html.Br(),
html.Div(id='my-output')
])
@app.callback(
Output(component_id='my-output', component_property='children'),
Input(component_id='my-input', component_property='value')
)
def update_output_div(input_value):
request_headers = dict(request.headers)
auth_info_brower = dataiku.api_client().get_auth_info_from_browser_headers(request_headers)
user = auth_info_brower['authIdentifier']
if user in user_permissions:
return '|'.join(user_permissions[user])
else:
return 'User not authorized'
Thanks,
Zach
thank you very much Zach! I've got it now