Do you want to have a different Power BI component configuration in Power Pages depending on who is logged in, making the data user relevant?

Some background
Table of Contents
How about creating a page in Power Pages that lets you display Power BI reports depending on the user that is logged in? So depending on which company a user works at, they get a different report shown?
So for different companies I have a different Power BI report to be displayed.
In this post I will give an example of how to implement this. You will need to get a little familiar with Liquid first. So please have a look at my post introducing Liquid first.
If you are completely new to Power Pages then have a read through my ultimate user guide on Power Pages
Get the company
In my case I don’t really want to company name of my logged in user. I rellay want the get the domain of the user. So the but after the @ sign in their email address.
To get the part after the @ sign we can use the filters split and last as shown below:
{% assign mycompany = user.emailaddress1 |split:"@" |last %}
{% if mycompany %}
<div style="padding: 8px; margin: 0px; display: flex; flex-wrap: wrap; text-align: left; min-height: 50px;"> Your Company: {{ mycompany }} </div>
{% endif %}
Then the last few lines will display the domain name of the user logged in.
Get the data
Now we need to get the data from a table that we created that holds the links to Power BI
We will use a fetchXMl for this:
{% fetchxml mylinks %}
<fetch version=”1.0″ output-format=”xml-platform” mapping=”logical” distinct=”true”>
<entity name=”creb7_clientpowerbilinks”>
<attribute name=”creb7_powerbilink” />
<attribute name=”creb7_name” />
</entity>
</fetch>
{% endfetchxml %}
In the above coded there are a few things to notices. The data that is read with the fetchxml is stored within a variable mylinks. Then the table that is being read has a logical name, creb7_clientpowerbilinks and there are two fields creb7_powerbilink and creb7_name.
Processing the data
So no we have an array called mylinks with all the data that we want. using a for loop we can display a Power VBI report with the link in question.
{%for item in mylinks.results.entities %}
{% if item.creb7_name == mycompany %}
{% powerbi authentication_type:"aad" path:item.creb7_powerbilink %}
{% endif %}
{% endfor %}
Display the Power BI component
For ease here is the full code as built up in this post.
{% assign mycompany = user.emailaddress1 |split:"@" |last %}
{% if mycompany %}
<div style="padding: 8px; margin: 0px; display: flex; flex-wrap: wrap; text-align: left; min-height: 50px;"> Your Company: {{ mycompany }} </div>
{% endif %}
{% fetchxml mylinks %}
<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="true">
<entity name="creb7_clientpowerbilinks">
<attribute name="creb7_powerbilink" />
<attribute name="creb7_name" />
</entity>
</fetch>
{% endfetchxml %}
{%for item in mylinks.results.entities %}
{% if item.creb7_name == mycompany %}
{% powerbi authentication_type:"aad" path:mylink.creb7_powerbilink %}
{% endif %}
{% endfor %}
The above code should then give you the Power BI report in your Power Pages that is built up dynamically.
