Analysis of EID and ID Usage

Under development

So far, this just provides a background on where the calls are occurring in the code. The section immediately below is the beginnings of
a higher level analysis of what tools show which kinds of ids.

Presentation-Layer Visibility of DisplayIds and Eids

View

Eids

DisplayIds

Explanation

Grade Book

 

(question)

Need to check this one

Portal Bug Report

(tick)

 

Looks like it shows the eid on screen to that user and then mails it to us.

Roster

(tick)

 

Each student's eid is visible alongside his/her name for the instructor AND THE OTHER STUDENTS to see

RWiki

 

(tick)

Each page shows who last modified it, format: First Last (DisplayID)

Samigo

(tick)

 

Student eids are displayed on the Scores and Questions pages alongside the student's full name (visible to instructor)

Site Info

 

(tick)

As far as I can tell the only ids shown here are DisplayIds, including Student DisplayIds

SU Tool

(tick)

 

The user logs in with his/her own Eid

WebDav

(tick)

 

The user connects via his/her own Eid and it's that Eid that's displayed under the "Upload/Download Multiple Resources"

Chat

Eids??

DisplayIds??

Displays first name lastname

Message Center

Eids??

DisplayIds??

Displays kerberos id in 2.1.x

Gradebook

Eids??

DisplayIds??

Displays kerberos id in 2.1.x in column labeled Student ID

A summary of the usage of EIDs in Sakai 2.3 Tools

Calls to UserDirectoryProvider.getUser() by Class

Class

Method

edu.amc.sakai.user.JLDAPDirectoryProvider

getUsers(Collection)

es.udl.asic.user.OpenLdapDirectoryProvider

getUsers(Collection)

org.sakaiproject.component.umsert.user.IMSEntUserDirectoryProvider

getUsers(Collection)

org.sakaiproject.component.kerberos.user.KerberosUserDirectoryProvider

findUserByEmail(UserEdit, String)

org.sakaiproject.component.kerberos.user.KerberosUserDirectoryProvider

getUsers(Collection)

org.sakaiproject.provider.ucd.impl.UserDirectoryProviderImpl

findUserByEmail(UserEdit, String)

org.sakaiproject.provider.ucd.impl.UserDirectoryProviderImpl

getUsers(Collection)

org.sakaiproject.provider.user.FilterUserDirectoryProvider

getUser(UserEdit)

org.sakaiproject.provider.user.SampleUserDirectoryProvider

findUserByEmail(UserEdit, String)

org.sakaiproject.provider.user.SampleUserDirectoryProvider

findUsersByEmail(String, UserFactory)

org.sakaiproject.provider.user.SampleUserDirectoryProvider

getUsers(Collection)

org.sakaiproject.user.impl.BaseUserDirectoryService

getUser(String)

org.sakaiproject.user.impl.BaseUserDirectoryService

getUserId(String)

Calls to UserDirectoryService.getUserId by Class

Class

Method

org.sakaiproject.user.impl.BaseUserDirectoryService

findUsersByEmail(String)

org.sakaiproject.user.impl.BaseUserDirectoryService

getUsersByEid(String)

Calls to User.getEid() by Class – ignoring the Classes listed above

Class

Method

Tool

org.sakaiproject.component.app.profile.ProfileManagerImpl

getEnterpriseIdByAgentUuid(String)

Profile

org.sakaiproject.component.app.roster.RosterManagerImpl

createParticipantByUser(User)

Roster

org.sakaiproject.content.tool.ResourcesAction

buildWebdavContext(VelocityPortlet, Context, RunData, SessionState)

WebDav

org.sakaiproject.metaobj.security.impl.sakai.SecurityBase

morphAgent(User)

N/A

org.sakaiproject.site.tool.SiteAction

doAdd_participant(RunData)

SiteTool

org.sakaiproject.site.tool.SiteAction

sendSiteRequest(SessionState, String, int, List)

SiteTool

org.sakaiproject.tool.assessment.integration.helper.integrated.AgentHelperImpl

getEid(String)

Samigo Services

org.sakaiproject.tool.assessment.integration.helper.integrated.AgentHelperImpl

getEidById(String)

Samigo Services

org.sakaiproject.tool.su.SuTool

su()

SU Tool

org.sakaiproject.user.tool.UsersAction

doSave(RunData, Content)

User Tool

org.sakaiproject.util.ErrorReporter

logAndMail(String...)

Portal Bug Report

Calls to User.getDisplayId() by Class

Class

Method

Tool

org.sakaiproject.assignment.impl.BaseAssignmentService

getGradesSpreadsheet(String)

Assignments

org.sakaiproject.authz.impl.BaseMember

getUserDisplayId()

N/A

org.sakaiproject.component.section.facade.impl.sakai21.SakaiUtil

convertUser(User)

N/A

org.sakaiproject.event.impl.UsageSessionServiceAdapter.BaseUsageSession

getUserDisplayId()

N/A

org.sakaiproject.site.impl.BaseSiteService

getEntityDescription(Reference)

N/A

org.sakaiproject.site.tool.SiteAction.Participant

getDisplayId()

SiteTool

uk.ac.cam.caret.sakai.rwiki.utils.UserDisplayHelper

formatDisplayName(String, String)

RWiki

Potential exposed presentation of Eids

Tool

Explanation

Profile

 

Roster

 

WebDav

 

SiteTool

 

Samigo

 

SU Tool

 

Portal BugReport

 

Exposed presentation of DisplayIds

Tool

Explanation

Assignments

 

SiteTool

 

RWiki

Each page shows who last modified it, format: First Last (DisplayID)

Some explanation of how userId is supplied for a provided user (in answer to Jon's question)

"org.sakaiproject.user.impl.BaseUserDirectoryService"
public String getUserId(String eid) throws UserNotDefinedException
	{
		eid = cleanEid(eid);

		// first, check our map
		String id = m_storage.checkMapForId(eid);
		if (id != null) return id;

		// if we don't have an id yet for this eid, and there's a provider that recognizes this eid, allocate an id
		if (m_provider != null)
		{
			// allocate the id to use if this succeeds
			id = assureUuid(null, eid);

			// make a new edit to hold the provider's info, hoping it will be filled in
			BaseUserEdit user = new BaseUserEdit((String) null);
			user.m_id = id;
			user.m_eid = eid;

			// check with the provider
			if (m_provider.getUser(user))
			{
				// record the id -> eid mapping (could possibly fail if somehow this eid was mapped since our test above)
				m_storage.putMap(user.getId(), user.getEid());

				return user.getId();
			}
		}

		// not found
		throw new UserNotDefinedException(eid);
	}

Version

Author

Date

1.0

James Renfro

12/01/2006

1.1

James Renfro

12/20/2006