public ExternalLoginInfo AddUserInfo(Person person, ShibbolethAuthenticationProvider provider, String externalString) { Person currentUser = Manager.GetPerson(UC.CurrentUserID); return(AddUserInfo(person, (currentUser == null) ? person : currentUser, provider, externalString)); }
private ExternalLoginInfo AddUserInfo(Person person, Person currentUser, ShibbolethAuthenticationProvider provider, String externalString) { ExternalLoginInfo account = null; try { Manager.BeginTransaction(); // find accounts for user List <ExternalLoginInfo> accounts = (from si in Manager.GetIQ <ExternalLoginInfo>() where si.Person == person && si.Provider == provider select si).ToList(); // verify if externalString must be splitted List <String> multipleIdentifiers = null; if (provider.MultipleItemsForRecord && !string.IsNullOrEmpty(provider.MultipleItemsSeparator)) { multipleIdentifiers = externalString.Split(provider.MultipleItemsSeparator.ToArray(), StringSplitOptions.RemoveEmptyEntries).ToList(); } if (multipleIdentifiers == null || multipleIdentifiers.Count == 0) { account = accounts.Where(a => a.IdExternalString.ToLower() == externalString.ToLower()).FirstOrDefault(); if (account == null) { account = CreateAccount(person, currentUser, provider, externalString); } else { UpdateAccount(account, person, currentUser, provider, externalString); } Manager.SaveOrUpdate(account); AddToHistory(account); } else { foreach (ExternalLoginInfo item in accounts) { List <String> itemIdentifiers = item.IdExternalString.Split(provider.MultipleItemsSeparator.ToArray(), StringSplitOptions.RemoveEmptyEntries).ToList(); if (itemIdentifiers.Where(i => multipleIdentifiers.Contains(i)).Any()) { account = item; multipleIdentifiers.Where(mi => !itemIdentifiers.Contains(mi)).ToList().ForEach(i => account.IdExternalString += provider.MultipleItemsSeparator + i); break; } } if (account == null) { account = CreateAccount(person, currentUser, provider, externalString); } else { UpdateAccount(account, person, currentUser, provider, account.IdExternalString); } AddToHistory(account); Manager.SaveOrUpdate(account); } if (person.IdDefaultProvider == 0 || String.IsNullOrEmpty(person.FirstLetter)) { //// TEMPORANEO //creator.Login = login; //creator.Password=userInfo.Password; //// TEMPORANEO if (person.IdDefaultProvider == 0 && provider != null) { person.IdDefaultProvider = provider.Id; } if (String.IsNullOrEmpty(person.FirstLetter)) { person.FirstLetter = person.Surname[0].ToString().ToLower(); } Manager.SaveOrUpdate(person); } Manager.Commit(); } catch (Exception ex) { } return(account); }
public ExternalLoginInfo AddFromInternalAccount(InternalLoginInfo internalAccount, ShibbolethAuthenticationProvider provider, String externalString) { return(AddUserInfo(internalAccount.Person, internalAccount.Person, provider, externalString)); }