<div dir="ltr">Related to this, we need some additional info that relates to the users profile in the UI:<div><br></div><div>This is our UI model.</div><div><br></div><div><div>export class Profile {</div><div>    fullName: string;</div><div>    imageURL: string;</div><div>    bio?: string;</div><div>    username?: string;</div><div>    url?: string;</div><div>    emails?: string[];</div><div>    primaryEmail?: string;</div><div>    notificationEmail?: string;</div><div>    publicEmail?: string;</div><div>    primaryEmailPrivate?: boolean;</div><div>    emailPreference?: string;</div><div>    notificationMethods?: string[];</div><div>}</div></div><div><br></div><div>Not 100% todo with this thread (as this is their profile, not their login info), but may help you.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On 27 January 2017 at 07:36, Alexey Kazakov <span dir="ltr"><<a href="mailto:alkazako@redhat.com" target="_blank">alkazako@redhat.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  

    
  
  <div bgcolor="#FFFFFF" text="#000000">
    Hi all,<br>
    <br>
    After some discussion with Aslak and Max I would lit to share
    proposal of User/login model update in almighty-core as part of our
    move to Keycloak auth. I'm copying this from
    <a class="m_2832717789264209377moz-txt-link-freetext" href="https://github.com/almighty/almighty-core/issues/672" target="_blank">https://github.com/almighty/<wbr>almighty-core/issues/672</a> (Use keycloak
    tokens instead of generating our own ones when serving client auth
    requests).
    
    <br>
    <br>
    <i><b>What we currently have in our model:</b></i><br>
    <br>
    <b>Identity</b> (represents a user)<br>
    <br>
        - uuid (generated automatically) - This uuid is used as
    "creator" and "assignee" in our payloads and it's also stored in the
    JWT token we generate after authentication.<br>
        - fullName (human name - string)<br>
        - avatarImage (URL string)<br>
        - users []User (list of associated users, each user just
    represents a email)<br>
    <br>
    <b>User</b><br>
    <br>
        - uuid (generated automatically)<br>
        - email (just a string)<br>
        - identity-uuid (Identity association)<br>
    <br>
    <b><i>Proposed model:</i></b><br>
    <br>
    <b>User</b> (represents a user account in our system)<br>
    <br>
        - uuid (generated automatically) - Our internal user ID. Used
    for associations with Logins<br>
        - fullName (human name - string)<br>
        - avatarImage (URL string)<br>
        - logins []Login (list of associated logins)<br>
    <br>
    <b>Login</b> I actually don't like this name. Can we call it <b>Identity
      Provider User</b> or somewhat else to avoid confusions? This is a
    representation of user provided by some particular Identity Provider
    such as: a) Our Keycloak; b) GitHub (for remote WI's); c) JIRA (for
    remote WI's), etc.<br>
    <br>
        - uuid - Generated automatically for remote WI but in case of KC
    the uuid from the KC user is used. This uuid is used as "creator"
    and "assignee" in our payloads and it's also represented in the KC
    token we retrieve from KC during authentication. So, our token is
    always associated with a Login.<br>
        - username (string) - Username used by corresponding IDP. It's
    not unique in our system (it's supposed to be unique for the
    particular IDP though).<br>
        - email (string)<br>
        - idp (string) - Some IDP key/ID which will indicate from what
    IDP we got this Login. Possible values: "keycloak", "github",
    "jira", etc.<br>
    <br>
    When a user is logging in we authenticate in our Keycloak (which
    uses <a href="http://developers.redhat.com" target="_blank">developers.redhat.com</a> as the default IDP). A new Login is
    created. We use uuid of the Keycloak user. idp="keycloak". We also
    create a User and associate these User - Login. We return the
    retrieved Keycloak token which will be used by UI for
    authentication. So there is a strong assassination between a token
    and a keyclaok Login.<br>
    <br>
    When we import a remote WI (from JIRA, github, etc) we create a
    Login which is not associated with any User yet. Open question: how
    we associate remote WI's (imported from github, etc) with User. We
    would need some manual workflow for that.<br>
    <br>
    This update will requre a massive refactoring in almighty-core (and
    ui probably too) :-(<br>
    <br>
    Any thoughts?<br>
  </div>

<br>______________________________<wbr>_________________<br>
almighty-public mailing list<br>
<a href="mailto:almighty-public@redhat.com">almighty-public@redhat.com</a><br>
<a href="https://www.redhat.com/mailman/listinfo/almighty-public" rel="noreferrer" target="_blank">https://www.redhat.com/<wbr>mailman/listinfo/almighty-<wbr>public</a><br>
<br></blockquote></div><br></div>