cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
hmedhat
Helper II
Helper II

Associate current portal user vs a text field in my entity

PowerApps Portal

1-I created an entity I get the records from the SQL and there is a column called UserEmail in this entity type text.

I want when I user sign in to my portal i want him to see his only records according to UserEmail Field.

 

My issue is when I selected Associate current portal user  it's need a lookupfield and my UserEmail is a textField .

1 ACCEPTED SOLUTION

Accepted Solutions

1. Set your trigger, use your entity and email field

justinburch_0-1599356193477.png

2. Get contacts that match that email, apply appropriate filters/sorting if you allow duplicates

justinburch_1-1599356261217.png

3. Check that a result is found - in your "no" section, consider updating a flag or manually creating a Contact and adding

Just use function "length" on the "values" of your list Action - e.g. length(outputs('List_records')?['body/value'])

justinburch_2-1599356360992.png

4. For each result (note my List only retrieves the Top 1 record), update your original entity with the Odata ID

 

justinburch_0-1599356597199.png

 

View solution in original post

9 REPLIES 9
OliverRodrigues
Super User
Super User

Hi, security in Power Apps Portals works based on a relationship to the Contact record

 

you need to add a lookup for Contact in your custom entity and use entity permissions to secure your CDS data in Portals

 

https://docs.microsoft.com/en-us/powerapps/maker/portals/configure/assign-entity-permissions#:~:text...

 

------------

If you like this post, give a Thumbs up. Where it solved your request, Mark it as a Solution to enable other users find it.

 




If you like this post, give a Thumbs up. Where it solved your request, Mark it as a Solution to enable other users find it.

Power Apps Portals Super User


Oliver Rodrigues


 

hi @OliverRodrigues 

 

If I created a lookup field in my entity I have to fill it's value one by one in all rows in the other hand  i have a text type field with the email value  i want to use vs portal user login.

Hi @hmedhat,

Everything below assumes you do have an authenticated experience with logged in users.

As Oliver mentioned, you'll still want to create a relationship if you don't want to custom build your views/entity lists (using HTML and Liquid). You won't be able to easily apply a filter otherwise.

 

However, if you absolutely need to, then you could consider this - note it will only work for Entity Lists, not subgrids:

  • Add a metadata Text filter on the Email1 field (see screenshot below)
  • Hide the filter on the page

 

.entitylist-filter {
    display: none;
}​

 

  • On load, fill the filter with the user's email address and click the button

 

<script>
/* This assumes you're doing this in the template/Copy/etc and can use Liquid... if not, store the email as a value of an input or something similar and retrieve it with the JS */
document.ready(function () {
    var $filterInput = $(".entitylist-filter-option-text input");
    if ($filterInput.val().length === 0) {
        $filterInput.val("{{ user.emailaddress1 }}");
        $(".btn-entitylist-filter-submit").click();
    }
});
</script>​

 

This will have a wonky user experience, as the user will load the page, have the script run and reload the page again with the entity list filtered. Using a Contact relationship will be the polished and secure implementation. If you don't care about security or user experience, you could just allow the users to type the filters themselves.

 

As far as having to manually update the lookups, you could easily build a Power Automate flow or Excel macro (among many other standard options) to handle this on an as-needed basis. If you're not willing to do this little bit of work, I can guarantee you won't want to build a custom entity list from scratch: it's a lot of work.

 

I hope this helps,
Justin

justinburch_0-1598771303401.png

 

Hi @justinburch ,

I found that you have posted same issue in our Community, please check my response within the following thread:

https://powerusers.microsoft.com/t5/Common-Data-Service-for-Apps/Powerapps-portalAssociate-current-p...

 

I also agree with @justinburch 's thought almost. The Custom JavaScript code could also achieve your needs. Please try above solutions, then check if it could help in your scenario.

 

Regards,

Community Support Team _ Kris Dai
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

can you please tell me how can i create a flow for this lookup records? @justinburch 

Hi @hmedhat,

It would be something like the following:

  1. CDS Connector (Current Environment)
    • On Create/Update of CustomEntity
    • Filter on new_customemailfield
  2. List Records: Contact
    • Odata: emailaddress1 eq new_customemailfield
    • Select Filter: contactid
  3. For Each List Records Result (not the most performant solution, but easiest to implement)
  4. Update Records: CustomEntity
    • new_customportallookup: value.contactid

 

This is very basic and without screenshots, but I'm hoping it explains the concept.

if you can provide screenshots it will be very helpful @justinburch 

1. Set your trigger, use your entity and email field

justinburch_0-1599356193477.png

2. Get contacts that match that email, apply appropriate filters/sorting if you allow duplicates

justinburch_1-1599356261217.png

3. Check that a result is found - in your "no" section, consider updating a flag or manually creating a Contact and adding

Just use function "length" on the "values" of your list Action - e.g. length(outputs('List_records')?['body/value'])

justinburch_2-1599356360992.png

4. For each result (note my List only retrieves the Top 1 record), update your original entity with the Odata ID

 

justinburch_0-1599356597199.png

 

View solution in original post

That's worked thank you very much @justinburch 

Helpful resources

Announcements
UG GA Amplification 768x460.png

Launching new user group features

Learn how to create your own user groups today!

Community Connections 768x460.jpg

Community & How To Videos

Check out the new Power Platform Community Connections gallery!

M365 768x460.jpg

Microsoft 365 Collaboration Conference | December 7–9, 2021

Join us, in-person, December 7–9 in Las Vegas, for the largest gathering of the Microsoft community in the world.

Users online (2,940)