//public Boolean UpdateOrganizationsAssocation(Int32 idUser, UrlMacAuthenticationProvider provider, List<dtoMacUrlUserAttribute> attributes) //{ // Boolean saved = false; // try // { // Manager.BeginTransaction(); // Person person = Manager.GetPerson(idUser); // if (person != null) // { // List<OrganizationAttributeItem> items = provider.GetOrganizationsInfo(attributes); // List<OrganizationAttribute> oAttributes = provider.Attributes.Where(p => p.Deleted == BaseStatusDeleted.None && p.GetType() == typeof(OrganizationAttribute)).Select(p => (OrganizationAttribute)p).ToList(); // List<String> userCodes = new List<String>(); // List<Int32> idOrganizations = new List<Int32>(); // foreach (dtoMacUrlUserAttribute uAtt in attributes.Where(a => a.Type == UrlMacAttributeType.organization && !String.IsNullOrEmpty(a.QueryValue)).ToList()) // { // OrganizationAttribute oAtt = oAttributes.Where(a => a.Id == uAtt.Id).FirstOrDefault(); // if (oAtt != null) // { // if (oAtt.AllowMultipleValue) // userCodes.AddRange(uAtt.QueryValue.Split(oAtt.MultipleValueSeparator.ToArray(), StringSplitOptions.RemoveEmptyEntries).ToList()); // else // userCodes.Add(uAtt.QueryValue); // } // idOrganizations.AddRange(oAtt.Items.Where(i => i.Deleted == BaseStatusDeleted.None && userCodes.Contains(i.RemoteCode)).Select(i => i.IdOrganization).ToList()); // } // List<OrganizationProfiles> associations = (from a in Manager.GetIQ<OrganizationProfiles>() // where a.Profile.Id== idUser // select a).ToList(); // //foreach (lm.Comol.Core.Catalogues.CataloguePersonAssignment assignment in assignments) // //{ // // if (idCatalogues.Contains(assignment.Id) && !assignment.Allowed) // // { // // assignment.UpdateMetaInfo(person, UC.IpAddress, UC.ProxyIpAddress); // // if (assignment.Deleted != BaseStatusDeleted.None) // // { // // assignment.FromProvider = true; // // assignment.Deleted = BaseStatusDeleted.None; // // } // // assignment.Allowed = true; // // Manager.SaveOrUpdate(assignment); // // } // // else if (!idCatalogues.Contains(assignment.Id) && assignment.Deleted == BaseStatusDeleted.None && assignment.Allowed && assignment.FromProvider) // // { // // assignment.UpdateMetaInfo(person, UC.IpAddress, UC.ProxyIpAddress); // // assignment.Allowed = false; // // Manager.SaveOrUpdate(assignment); // // } // //} // //foreach (long idCatalogue in idCatalogues.Where(i => !assignments.Select(a => a.Id).ToList().Contains(i)).ToList()) // //{ // // lm.Comol.Core.Catalogues.CataloguePersonAssignment pAssignment = new Catalogues.CataloguePersonAssignment(); // // pAssignment.UpdateMetaInfo(person, UC.IpAddress, UC.ProxyIpAddress); // // pAssignment.FromProvider = true; // // pAssignment.AssignedTo = person; // // pAssignment.Allowed = true; // // Manager.SaveOrUpdate(pAssignment); // //} // saved = true; // } // Manager.Commit(); // } // catch (Exception ex) // { // saved = false; // Manager.RollBack(); // } // return saved; //} public dtoExternalCredentials GetCredentials(MacUrlAuthenticationProvider provider, List <dtoMacUrlUserAttribute> attributes) { dtoExternalCredentials credentials = new dtoExternalCredentials(); if (attributes.Where(a => a.isIdentifier).Any()) { credentials.IdentifierString = attributes.Where(a => a.isIdentifier).FirstOrDefault().QueryValue; } else { UserProfileAttribute pAttribute = provider.Attributes.Where(p => p.Deleted == BaseStatusDeleted.None && p.GetType() == typeof(UserProfileAttribute)).Where(p => ((UserProfileAttribute)p).Attribute == ProfileAttributeType.externalId).Select(p => (UserProfileAttribute)p).FirstOrDefault(); if (pAttribute != null) { credentials.IdentifierString = attributes.Where(i => i.Type == UrlMacAttributeType.profile && i.Id == pAttribute.Id).Select(i => i.QueryValue).FirstOrDefault(); } else { CompositeProfileAttribute cmpAttribute = provider.Attributes.Where(p => p.Deleted == BaseStatusDeleted.None && p.GetType() == typeof(CompositeProfileAttribute)).Where(p => ((CompositeProfileAttribute)p).Attribute == ProfileAttributeType.externalId).Select(p => (CompositeProfileAttribute)p).FirstOrDefault(); if (!cmpAttribute.Items.Where(i => i.Deleted == BaseStatusDeleted.None).Any()) { credentials.IdentifierString = ""; } else { credentials.IdentifierString = (attributes.Where(i => i.Id == cmpAttribute.Id).Any()) ? attributes.Where(i => i.Id == cmpAttribute.Id).Select(i => i.QueryValue).FirstOrDefault() : ""; } } } return(credentials); }
private Boolean AddAuthentication(Person person, dtoBaseProfile profile, dtoImportSettings settings, ProfileAttributesRow row, AuthenticationProvider provider) { Boolean result = false; if (provider.ProviderType == AuthenticationProviderType.Internal) { InternalLoginInfo info = InternalService.GenerateUserInfo(person, profile.Login, profile.Password, (InternalAuthenticationProvider)provider, false); result = (info != null); } else { dtoExternalCredentials credentials = new dtoExternalCredentials(); if (lm.Comol.Core.DomainModel.PermissionHelper.CheckPermissionSoft((int)provider.IdentifierFields, (int)IdentifierField.longField)) { long identifierLong = 0; long.TryParse(row.GetCellValue(ProfileAttributeType.externalId), out identifierLong); credentials.IdentifierLong = identifierLong; } if (lm.Comol.Core.DomainModel.PermissionHelper.CheckPermissionSoft((int)provider.IdentifierFields, (int)IdentifierField.stringField)) { credentials.IdentifierString = row.GetCellValue(ProfileAttributeType.externalId); } if (UrlService.VerifyDuplicateExternalLoginInfo(person, provider, credentials) == ProfilerError.none) { ExternalLoginInfo externaLogin = UrlService.AddExternalProfile(person, provider, credentials); result = (externaLogin != null); } } return(result); }
public void SaveExternalProvider(long idProvider, dtoExternalCredentials credentials) { long idLoginInfo = View.CurrentIdLoginInfo; ProfilerError message = Service.VerifyExternalInfoDuplicate(View.idProfile, idProvider, credentials); if (message == ProfilerError.none) { if (idLoginInfo == 0) { message = Service.AddExternalLogin(View.idProfile, idProvider, credentials); } else { message = Service.UpdateExternalLogin(idLoginInfo, credentials); } if (message == ProfilerError.none) { if (idLoginInfo == 0) { Person person = CurrentManager.GetPerson(View.idProfile); if (person != null) { View.idDefaultProvider = person.IdDefaultProvider; } SetupOtherProviders(); } LoadAuthenticationItems(); } else if (message == ProfilerError.externalUniqueIDduplicate) { View.DisplayProfilerExternalError(message); } else { View.DisplayError(message); } } else { View.DisplayProfilerExternalError(message); } }
public virtual ProfilerError VerifyDuplicateExternalLoginInfo(Person person, AuthenticationProvider provider, dtoExternalCredentials credentials) { var query = (from ei in Manager.GetIQ <ExternalLoginInfo>() where ei.Deleted == BaseStatusDeleted.None && ei.Provider == provider && ei.Person != null && ei.Person != person select ei); if ((provider.IdentifierFields & IdentifierField.longField) > 0 && query.Where(ei => ei.IdExternalLong == credentials.IdentifierLong).Any()) { return(ProfilerError.externalUniqueIDduplicate); } else if ((provider.IdentifierFields & IdentifierField.stringField) > 0) { List <String> multipleIdentifiers = null; if (provider.MultipleItemsForRecord && !string.IsNullOrEmpty(provider.MultipleItemsSeparator)) { multipleIdentifiers = credentials.IdentifierString.Split(provider.MultipleItemsSeparator.ToArray(), StringSplitOptions.RemoveEmptyEntries).ToList(); List <ExternalLoginInfo> items = new List <ExternalLoginInfo>(); foreach (String idn in multipleIdentifiers) { items.AddRange(query.Where(q => q.IdExternalString.Contains(idn)).ToList()); } if ((provider.IdentifierFields & IdentifierField.longField) > 0) { items = items.Where(i => i.IdExternalLong == credentials.IdentifierLong).ToList(); } Boolean found = false; foreach (ExternalLoginInfo item in items) { found = item.IdExternalString.Split(provider.MultipleItemsSeparator.ToArray(), StringSplitOptions.RemoveEmptyEntries).ToList().Where(v => multipleIdentifiers.Contains(v)).Any(); if (found) { break; } } return((found) ? ProfilerError.externalUniqueIDduplicate : ProfilerError.none); } else { return((query.Where(ei => ei.IdExternalString == credentials.IdentifierString).Any()) ? ProfilerError.externalUniqueIDduplicate : ProfilerError.none); } } else { return(ProfilerError.none); } }
public virtual List <ProfilerError> VerifyProfileInfo(dtoBaseProfile profile, AuthenticationProvider provider, dtoExternalCredentials credentials) { List <ProfilerError> result = new List <ProfilerError>(); if (provider != null) { if (provider.ProviderType == AuthenticationProviderType.Internal && (from ei in Manager.GetIQ <InternalLoginInfo>() where ei.Provider == provider && ei.Login == profile.Login select ei.Id).Any()) { result.Add(ProfilerError.loginduplicate); } else if ((from ei in Manager.GetIQ <ExternalLoginInfo>() where ei.Provider == provider && ei.IdExternalLong == credentials.IdentifierLong && (ei.IdExternalString == credentials.IdentifierString) select ei.Id).Any()) { result.Add(ProfilerError.externalUniqueIDduplicate); } } return(result); }
public virtual List <ProfilerError> VerifyProfileInfo(dtoBaseProfile profile, long idProvider, dtoExternalCredentials credentials) { List <ProfilerError> result = new List <ProfilerError>(); if (!isUniqueMail(profile.Mail)) { result.Add(ProfilerError.mailDuplicate); } if (!String.IsNullOrEmpty(profile.TaxCode) && !isUniqueTaxCode(profile.TaxCode)) { result.Add(ProfilerError.taxCodeDuplicate); } result.AddRange(VerifyProfileInfo(profile, Manager.Get <AuthenticationProvider>(idProvider), credentials)); return(result); }
public ExternalLoginInfo AddExternalProfile(Int32 IdPerson, long idProvider, dtoExternalCredentials credentials) { return(ProfileService.AddExternalProfile(IdPerson, idProvider, credentials)); }
public CompanyUser AddCompanyUser(CompanyUser profile, long idProvider, dtoExternalCredentials credentials) { return(ProfileService.AddCompanyUser(profile, idProvider, credentials)); }
public Employee AddEmployee(Employee profile, long idProvider, dtoExternalCredentials credentials) { return(ProfileService.AddEmployee(profile, idProvider, credentials)); }
public ExternalLoginInfo AddExternalProfile(Person person, AuthenticationProvider provider, dtoExternalCredentials credentials) { ExternalLoginInfo account = null; try { Manager.BeginTransaction(); Person currentUser = Manager.GetPerson(UC.CurrentUserID); List <ExternalLoginInfo> accounts = (from si in Manager.GetIQ <ExternalLoginInfo>() where si.Provider == provider && si.Person == person select si).ToList(); if (lm.Comol.Core.DomainModel.PermissionHelper.CheckPermissionSoft((long)provider.IdentifierFields, (long)IdentifierField.longField) && lm.Comol.Core.DomainModel.PermissionHelper.CheckPermissionSoft((long)provider.IdentifierFields, (long)IdentifierField.stringField)) { account = accounts.Where(a => a.IdExternalLong == credentials.IdentifierLong && a.IdExternalString == credentials.IdentifierString).FirstOrDefault(); } else if (lm.Comol.Core.DomainModel.PermissionHelper.CheckPermissionSoft((long)provider.IdentifierFields, (long)IdentifierField.longField)) { account = accounts.Where(a => a.IdExternalLong == credentials.IdentifierLong).FirstOrDefault(); } else { List <String> multipleIdentifiers = null; if (provider.MultipleItemsForRecord && !string.IsNullOrEmpty(provider.MultipleItemsSeparator)) { multipleIdentifiers = credentials.IdentifierString.Split(provider.MultipleItemsSeparator.ToArray(), StringSplitOptions.RemoveEmptyEntries).ToList(); } if (multipleIdentifiers == null || multipleIdentifiers.Count == 0) { account = accounts.Where(a => a.IdExternalString.ToLower() == credentials.IdentifierString.ToLower()).FirstOrDefault(); } 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()) { String tmp = credentials.IdentifierString; credentials.IdentifierString = item.IdExternalString; account = item; multipleIdentifiers.Where(mi => !itemIdentifiers.Contains(mi)).ToList().ForEach(i => credentials.IdentifierString += provider.MultipleItemsSeparator + i); break; } } } } if (account == null) { account = CreateAccount(person, currentUser, provider, credentials); } else { UpdateAccount(account, person, currentUser, provider, credentials); } Manager.SaveOrUpdate(account); AddToHistory(account); if (person.IdDefaultProvider == 0 || String.IsNullOrEmpty(person.FirstLetter)) { if (person.IdDefaultProvider == 0) { 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); }
protected void UpdateAccount(ExternalLoginInfo account, Person person, Person currentUser, AuthenticationProvider provider, dtoExternalCredentials credentials) { account.UpdateMetaInfo((currentUser == null) ? person : currentUser, UC.IpAddress, UC.ProxyIpAddress); if (lm.Comol.Core.DomainModel.PermissionHelper.CheckPermissionSoft((long)provider.IdentifierFields, (long)IdentifierField.longField)) { account.IdExternalLong = credentials.IdentifierLong; } if (lm.Comol.Core.DomainModel.PermissionHelper.CheckPermissionSoft((long)provider.IdentifierFields, (long)IdentifierField.stringField)) { account.IdExternalString = credentials.IdentifierString; } account.isEnabled = !person.isDisabled; account.Deleted = BaseStatusDeleted.None; }
public void AddAuthenticationProvider(int IdUser, long idProvider, dtoExternalCredentials credentials) { }