001    package hirondelle.web4j.security;
002    
003    import hirondelle.web4j.model.AppException;
004    import hirondelle.web4j.model.Id;
005    
006    /**
007      Look up the login name of the user who owns an  
008      <a href='UntrustedProxyForUserId.html#UntrustedIdentifier'>untrusted identifer</a>.
009      
010      <P>See the <a href='http://www.web4j.com/UserGuide.jsp#DataOwnershipConstraints'>User Guide</a> 
011      and {@link hirondelle.web4j.security.UntrustedProxyForUserId} for important information regarding 
012      this interface. 
013    */
014    public interface FetchIdentifierOwner {
015      
016      /**
017       Return the user login name of the user that 'owns' the <a href='UntrustedProxyForUserId.html#UntrustedIdentifier'>untrusted proxy for the 
018       user id</a> used in the current request. If an owner cannot be found, then return <tt>null</tt>. 
019       
020        <P>The meaning of the untrusted identifier depends on the context, and changes for each action/operation.
021        A typical implmentation will follow these steps:
022       <ul>
023        <li>use a request parameter value, whose value contains the untrusted identifier
024        <li>the value of the untrusted identifier is then passed to a <tt>SELECT</tt> statement, 
025        which returns a single value - the owner's login name
026       </ul>
027      */
028      Id fetchOwner() throws AppException;
029    
030    }