public Result DisableUser(visual_fim_user model, SpuContext spucontext) { try { var setup = spucontext.table_setup.FirstOrDefault(); PrincipalContext context = new PrincipalContext(ContextType.Domain, setup.Host, setup.Base, setup.Username, setup.Password); UserPrincipal principal = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, model.basic_uid); if (principal == null) { return(new Result() { result = false, Message = "Account has not found" }); } DirectoryEntry d = principal.GetUnderlyingObject() as DirectoryEntry; d.Properties["userAccountControl"].Value = userAccountControl.DisablePasswordNotRequired; principal.Save(); return(new Result() { result = true }); } catch (Exception ex) { return(new Result() { result = false, Message = ex.Message }); } }
public Result UpdateUser(visual_fim_user model, SpuContext spucontext) { try { var setup = spucontext.table_setup.FirstOrDefault(); using (DirectoryEntry entry = new DirectoryEntry(setup.LDAPHost + setup.LDAPBase, setup.LDAPUsername, setup.LDAPPassword, AuthenticationTypes.FastBind)) { string filter = "(&(|(objectClass=inetOrgPerson))(&(uid=" + model.basic_uid + ")))"; DirectorySearcher nDS = new DirectorySearcher(entry); nDS.SearchScope = SearchScope.Subtree; nDS.Filter = filter; SearchResult src = nDS.FindOne(); if (src != null) { DirectoryEntry de = src.GetDirectoryEntry(); de.Properties["cn"].Value = AppUtil.ManageNull(model.basic_cn); de.Properties["sn"].Value = AppUtil.ManageNull(model.basic_sn); de.Properties["displayName"].Value = AppUtil.ManageNull(model.basic_displayname); de.Properties["givenName"].Value = AppUtil.ManageNull(model.basic_givenname); de.Properties["telephoneNumber"].Value = AppUtil.ManageNull(model.basic_telephonenumber); de.Properties["mobile"].Value = AppUtil.ManageNull(model.basic_mobile); de.Properties["jobcode"].Value = AppUtil.ManageNull(model.cu_jobcode); de.Properties["pplid"].Value = AppUtil.ManageNull(model.cu_pplid); de.Properties["thcn"].Value = AppUtil.ManageNull(model.cu_thcn); de.Properties["thsn"].Value = AppUtil.ManageNull(model.cu_thsn); de.Properties["inetCOS"].Value = AppUtil.ManageNull(model.unix_inetCOS); de.Properties["CUexpire"].Value = AppUtil.ManageNull(model.cu_CUexpire); if (model.system_idm_user_type != IDMUserType.temporary) { de.Properties["gecos"].Value = AppUtil.ManageNull(model.cu_gecos); } de.CommitChanges(); entry.Close(); de.Close(); return(new Result() { result = true }); } } } catch (Exception ex) { return(new Result() { result = false, Message = ex.Message }); } return(new Result() { result = false }); }
public Result UpdateUser(visual_fim_user model, SpuContext spucontext) { try { var setup = spucontext.table_setup.FirstOrDefault(); var oufilter = model.system_ou_lvl1.Replace("o=", "ou=") + ","; if (!string.IsNullOrEmpty(model.system_ou_lvl2)) { oufilter = model.system_ou_lvl2.Replace("o=", "ou=") + "," + oufilter; } if (!string.IsNullOrEmpty(model.system_ou_lvl3)) { oufilter = model.system_ou_lvl3.Replace("o=", "ou=") + "," + oufilter; } PrincipalContext context = new PrincipalContext(ContextType.Domain, setup.Host, oufilter + setup.Base, setup.Username, setup.Password); UserPrincipal principal = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, model.basic_uid); if (principal == null) { return(new Result() { result = false, Message = "Account has not found" }); } principal.GivenName = model.basic_givenname; principal.Surname = model.basic_sn; principal.DisplayName = model.basic_displayname; if (!string.IsNullOrEmpty(model.basic_telephonenumber)) { principal.VoiceTelephoneNumber = model.basic_telephonenumber; } principal.EmailAddress = model.basic_mail; principal.UserPrincipalName = model.basic_userprincipalname; principal.Save(); DirectoryEntry d = principal.GetUnderlyingObject() as DirectoryEntry; d.Properties["pplid"].Value = model.cu_pplid; d.Properties["employeeID"].Value = model.cu_jobcode; principal.Save(); return(new Result() { result = true }); } catch (Exception ex) { return(new Result() { result = false, Message = ex.Message }); } }
public async void Login(visual_fim_user user, bool isPersistent) { var identity = new ClaimsIdentity(CookieAuthenticationDefaults.AuthenticationScheme, ClaimTypes.Name, ClaimTypes.Role); identity.AddClaim(new Claim(ClaimTypes.NameIdentifier, user.basic_uid)); identity.AddClaim(new Claim(ClaimTypes.Role, user.system_idm_user_type.toUserTypeName())); identity.AddClaim(new Claim(ClaimTypes.Name, user.basic_uid)); // Authenticate using the identity var principal = new ClaimsPrincipal(identity); await this.httpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, principal, new AuthenticationProperties { IsPersistent = isPersistent }); }
public Result DeleteUser(visual_fim_user model, SpuContext spucontext) { try { var setup = spucontext.table_setup.FirstOrDefault(); using (DirectoryEntry entry = new DirectoryEntry(setup.LDAPHost + setup.LDAPBase, setup.LDAPUsername, setup.LDAPPassword, AuthenticationTypes.FastBind)) { string filter = "(&(|(objectClass=inetOrgPerson))(&(uid=" + model.basic_uid + ")))"; SearchResult src = null; DirectorySearcher nDS = new DirectorySearcher(entry); nDS.SearchScope = SearchScope.Subtree; nDS.Filter = filter; try { src = nDS.FindOne(); if (src != null) { DirectoryEntry removeEntry = src.GetDirectoryEntry(); DirectoryEntry parentEntry = removeEntry.Parent; parentEntry.Children.Remove(removeEntry); parentEntry.CommitChanges(); parentEntry.Close(); removeEntry.Close(); } entry.Close(); return(new Result() { result = true }); } catch (Exception ex) { return(new Result() { result = false, Message = ex.Message }); } } } catch (Exception ex) { return(new Result() { result = false, Message = ex.Message }); } }
public Result MoveOU(visual_fim_user model, SpuContext spucontext) { try { var setup = spucontext.table_setup.FirstOrDefault(); var oufilter = model.system_ou_lvl1.Replace("o=", "ou=") + ","; if (!string.IsNullOrEmpty(model.system_ou_lvl2)) { oufilter = model.system_ou_lvl2.Replace("o=", "ou=") + "," + oufilter; } if (!string.IsNullOrEmpty(model.system_ou_lvl3)) { oufilter = model.system_ou_lvl3.Replace("o=", "ou=") + "," + oufilter; } PrincipalContext context = new PrincipalContext(ContextType.Domain, setup.Host, setup.Base, setup.Username, setup.Password); UserPrincipal principal = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, model.basic_uid); if (principal == null) { return(new Result() { result = false, Message = "Account has not found" }); } DirectoryEntry de = principal.GetUnderlyingObject() as DirectoryEntry; DirectoryEntry nde = new DirectoryEntry("LDAP://" + setup.Host + "/" + oufilter + setup.Base, setup.Username, setup.Password, AuthenticationTypes.FastBind); de.CommitChanges(); de.MoveTo(nde); de.Close(); nde.Close(); return(new Result() { result = true }); } catch (Exception ex) { return(new Result() { result = false, Message = ex.Message }); } }
public Result ChangePwd(visual_fim_user model, string pwd, SpuContext spucontext) { try { var setup = spucontext.table_setup.FirstOrDefault(); using (DirectoryEntry entry = new DirectoryEntry(setup.LDAPHost + setup.LDAPBase, setup.LDAPUsername, setup.LDAPPassword, AuthenticationTypes.FastBind)) { string filter = "(&(|(objectClass=inetOrgPerson))(&(uid=" + model.basic_uid + ")))"; DirectorySearcher nDS = new DirectorySearcher(entry); nDS.SearchScope = SearchScope.Subtree; nDS.Filter = filter; SearchResult src = nDS.FindOne(); if (src != null) { DirectoryEntry de = src.GetDirectoryEntry(); //de.Invoke("SetPassword", new object[] { AppUtil.ManageNull(pwd) }); de.Properties["userPassword"].Value = AppUtil.ManageNull(pwd); de.CommitChanges(); entry.Close(); de.Close(); return(new Result() { result = true }); } } } catch (Exception ex) { return(new Result() { result = false, Message = ex.Message }); } return(new Result() { result = false }); }
public Result ChangePwd(visual_fim_user model, string pwd, SpuContext spucontext) { try { var setup = spucontext.table_setup.FirstOrDefault(); var oufilter = model.system_ou_lvl1.Replace("o=", "ou=") + ","; if (!string.IsNullOrEmpty(model.system_ou_lvl2)) { oufilter = model.system_ou_lvl2.Replace("o=", "ou=") + "," + oufilter; } if (!string.IsNullOrEmpty(model.system_ou_lvl3)) { oufilter = model.system_ou_lvl3.Replace("o=", "ou=") + "," + oufilter; } PrincipalContext context = new PrincipalContext(ContextType.Domain, setup.Host, oufilter + setup.Base, setup.Username, setup.Password); UserPrincipal principal = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, model.basic_uid); if (principal == null) { return(new Result() { result = false, Message = "Account has not found" }); } principal.SetPassword(pwd); principal.Save(); return(new Result() { result = true }); } catch (Exception ex) { return(new Result() { result = false, Message = ex.Message }); } }
public Result CreateUser(visual_fim_user model, SpuContext spucontext) { try { var setup = spucontext.table_setup.FirstOrDefault(); var oufilter = model.system_ou_lvl1.Replace("o=", "ou=") + ","; if (!string.IsNullOrEmpty(model.system_ou_lvl2)) { oufilter = model.system_ou_lvl2.Replace("o=", "ou=") + "," + oufilter; } if (!string.IsNullOrEmpty(model.system_ou_lvl3)) { oufilter = model.system_ou_lvl3.Replace("o=", "ou=") + "," + oufilter; } PrincipalContext context = new PrincipalContext(ContextType.Domain, setup.Host, oufilter + setup.Base, setup.Username, setup.Password); UserPrincipal old = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, model.basic_uid); if (old != null) { return(new Result() { result = false, Message = "Account is duplicated" }); } //using (DirectoryEntry de = new DirectoryEntry("LDAP://" + setup.Host + "/" + oufilter + setup.Base, setup.Username, setup.Password, AuthenticationTypes.FastBind)) //{ // DirectoryEntry newUser = de.Children.Add("CN=" + model.basic_uid, "user"); // newUser.Properties["samaccountname"].Value = model.basic_uid; // //d.Properties["userPassword"].Value = Cryptography.decrypt(model.basic_userPassword); // newUser.Properties["givenName"].Value = model.basic_givenname; // newUser.Properties["sn"].Value = model.basic_sn; // newUser.Properties["displayName"].Value = model.basic_displayname; // newUser.Properties["telephoneNumber"].Value = model.basic_telephonenumber; // newUser.Properties["mail"].Value = model.basic_mail; // newUser.Properties["userPrincipalName"].Value = model.basic_userprincipalname; // newUser.Properties["internetaccess"].Value = model.internetaccess; // newUser.Properties["netcastaccess"].Value = model.netcastaccess; // newUser.Properties["pplid"].Value = model.cu_pplid; // newUser.Properties["employeeID"].Value = model.cu_jobcode; // if (model.cu_nsaccountlock == "TRUE") // newUser.Properties["userAccountControl"].Value = userAccountControl.DisablePasswordNotRequired; // else // newUser.Properties["userAccountControl"].Value = userAccountControl.EnablePasswordNotRequired; // newUser.CommitChanges(); // //newUser.Invoke("SetPassword", Cryptography.decrypt(model.basic_userPassword)); // newUser.CommitChanges(); // de.CommitChanges(); //} UserPrincipal principal = new UserPrincipal(context, model.basic_uid, Cryptography.decrypt(model.basic_userPassword), true); principal.SamAccountName = model.basic_uid; principal.GivenName = model.basic_givenname; principal.Surname = model.basic_sn; principal.DisplayName = model.basic_displayname; if (!string.IsNullOrEmpty(model.basic_telephonenumber)) { principal.VoiceTelephoneNumber = model.basic_telephonenumber; } principal.EmailAddress = model.basic_mail; principal.UserPrincipalName = model.basic_userprincipalname; principal.Save(); DirectoryEntry d = principal.GetUnderlyingObject() as DirectoryEntry; d.Properties["internetaccess"].Value = model.internetaccess; d.Properties["netcastaccess"].Value = model.netcastaccess; d.Properties["pplid"].Value = model.cu_pplid; if (!string.IsNullOrEmpty(model.cu_jobcode)) { d.Properties["employeeID"].Value = model.cu_jobcode; } if (model.cu_nsaccountlock == "TRUE") { d.Properties["userAccountControl"].Value = userAccountControl.DisablePasswordNotRequired; } else { d.Properties["userAccountControl"].Value = userAccountControl.EnablePasswordNotRequired; } principal.Save(); return(new Result() { result = true }); } catch (Exception ex) { return(new Result() { result = false, Message = ex.Message }); } }
public IActionResult ResetPassword(ChangePassword2DTO model) { visual_fim_user fim_user = null; try { fim_user = this._context.table_visual_fim_user.Where(w => w.basic_uid == DataEncryptor.Decrypt(model.Code)).FirstOrDefault(); if (fim_user == null) { return(RedirectToAction("Logout", "Auth")); } } catch (Exception ex) { return(RedirectToAction("Logout", "Auth")); } if (ModelState.IsValid) { var msg = ReturnMessage.ChangePasswordFail; var code = ReturnCode.Error; ViewBag.Message = msg; ViewBag.ReturnCode = code; try { fim_user.basic_userPassword = Cryptography.encrypt(model.Password); fim_user.cu_pwdchangeddate = DateUtil.Now(); fim_user.cu_pwdchangedby = fim_user.basic_uid; fim_user.cu_pwdchangedloc = getClientIP(); fim_user.system_actived = true; _context.SaveChanges(); var result_ldap = _providerldap.ChangePwd(fim_user, model.Password, _context); if (result_ldap.result == true) { writelog(LogType.log_reset_password, LogStatus.successfully, IDMSource.LDAP, fim_user.basic_uid); } else { writelog(LogType.log_reset_password, LogStatus.failed, IDMSource.LDAP, fim_user.basic_uid, log_exception: result_ldap.Message); } var result_ad = _provider.ChangePwd(fim_user, model.Password, _context); if (result_ad.result == true) { writelog(LogType.log_reset_password, LogStatus.successfully, IDMSource.AD, fim_user.basic_uid); } else { writelog(LogType.log_reset_password, LogStatus.failed, IDMSource.AD, fim_user.basic_uid, log_exception: result_ad.Message); } writelog(LogType.log_reset_password, LogStatus.successfully, IDMSource.VisualFim, fim_user.basic_uid); msg = ReturnMessage.ChangePasswordSuccess; code = ReturnCode.Success; ViewBag.Message = msg; ViewBag.ReturnCode = code; return(RedirectToAction("ResetPasswordCompleted", new { code = code, msg = msg })); } catch (Exception ex) { writelog(LogType.log_reset_password, LogStatus.failed, IDMSource.VisualFim, fim_user.basic_uid, log_exception: ex.Message); } } return(View(model)); }
public Result MoveOU(visual_fim_user model, SpuContext spucontext) { try { var setup = spucontext.table_setup.FirstOrDefault(); using (DirectoryEntry entry = new DirectoryEntry(setup.LDAPHost + setup.LDAPBase, setup.LDAPUsername, setup.LDAPPassword, AuthenticationTypes.FastBind)) { string filter = "(&(|(objectClass=inetOrgPerson))(&(uid=" + model.basic_uid + ")))"; DirectorySearcher nDS = new DirectorySearcher(entry); nDS.SearchScope = SearchScope.Subtree; nDS.Filter = filter; SearchResult src = nDS.FindOne(); if (src != null) { var system_ou_lvl1 = AppUtil.getOuName(model.system_ou_lvl1); var system_ou_lvl2 = AppUtil.getOuName(model.system_ou_lvl2); var system_ou_lvl3 = AppUtil.getOuName(model.system_ou_lvl3); var nou = ""; if (!string.IsNullOrEmpty(model.system_ou_lvl3)) { nou += "," + model.system_ou_lvl3.ToLower(); } if (!string.IsNullOrEmpty(model.system_ou_lvl2)) { nou += "," + model.system_ou_lvl2.ToLower(); } if (!string.IsNullOrEmpty(model.system_ou_lvl1)) { nou += "," + model.system_ou_lvl1.ToLower(); } nou = nou.Substring(1); DirectoryEntry de = src.GetDirectoryEntry(); DirectoryEntry nde = new DirectoryEntry(setup.LDAPHost + nou + "," + setup.LDAPBase, setup.LDAPUsername, setup.LDAPPassword, AuthenticationTypes.FastBind); if (model.system_idm_user_type != IDMUserType.temporary) { de.Properties["gecos"].Value = AppUtil.ManageNull(model.cu_gecos); } de.CommitChanges(); de.MoveTo(nde); entry.Close(); de.Close(); nde.Close(); return(new Result() { result = true }); } } } catch (Exception ex) { return(new Result() { result = false, Message = ex.Message }); } return(new Result() { result = false }); }
public Result CreateUser(visual_fim_user model, SpuContext spucontext) { try { var setup = spucontext.table_setup.FirstOrDefault(); using (DirectoryEntry entry = new DirectoryEntry(setup.LDAPHost + setup.LDAPBase, setup.LDAPUsername, setup.LDAPPassword, AuthenticationTypes.FastBind)) { string filter = "(&(|(objectClass=inetOrgPerson))(&(uid=" + model.basic_uid + ")))"; DirectorySearcher nDS = new DirectorySearcher(entry); nDS.SearchScope = SearchScope.Subtree; nDS.Filter = filter; SearchResult src = nDS.FindOne(); if (src == null) { var oufilter = model.system_ou_lvl1; if (!string.IsNullOrEmpty(model.system_ou_lvl2)) { oufilter = model.system_ou_lvl2 + "," + oufilter; } if (!string.IsNullOrEmpty(model.system_ou_lvl3)) { oufilter = model.system_ou_lvl3 + "," + oufilter; } DirectoryEntry de = entry.Children.Find(oufilter); //DirectoryEntry newUser = entry.Children.Add("CN=" + username, "person"); DirectoryEntry newUser = de.Children.Add("uid=" + model.basic_uid, "inetOrgPerson"); newUser.Properties["cn"].Value = AppUtil.ManageNull(model.basic_cn); newUser.Properties["sn"].Value = AppUtil.ManageNull(model.basic_sn); newUser.Properties["displayName"].Value = AppUtil.ManageNull(model.basic_displayname); newUser.Properties["givenName"].Value = AppUtil.ManageNull(model.basic_givenname); newUser.Properties["mail"].Value = AppUtil.ManageNull(model.basic_mail); newUser.Properties["telephoneNumber"].Value = AppUtil.ManageNull(model.basic_telephonenumber); newUser.Properties["mobile"].Value = AppUtil.ManageNull(model.basic_mobile); newUser.Properties["userPassword"].Value = AppUtil.ManageNull(Cryptography.decrypt(model.basic_userPassword)); newUser.CommitChanges(); newUser.RefreshCache(); /*chulaInfo*/ newUser.Properties["objectClass"].Add("chulaInfo"); newUser.Properties["jobcode"].Value = AppUtil.ManageNull(model.cu_jobcode); newUser.Properties["internetaccess"].Value = AppUtil.ManageNull(model.internetaccess); newUser.Properties["mailacceptinggeneralid"].Value = AppUtil.ManageNull(model.cu_mailacceptinggeneralid); newUser.Properties["maildrop"].Value = AppUtil.ManageNull(model.cu_maildrop); newUser.Properties["netcastaccess"].Value = AppUtil.ManageNull(model.netcastaccess); newUser.Properties["pplid"].Value = AppUtil.ManageNull(model.cu_pplid); newUser.Properties["pwdchangedby"].Value = AppUtil.ManageNull(model.cu_pwdchangedby); newUser.Properties["pwdchangedloc"].Value = AppUtil.ManageNull(model.cu_pwdchangedloc); newUser.Properties["thcn"].Value = AppUtil.ManageNull(model.cu_thcn); newUser.Properties["thsn"].Value = AppUtil.ManageNull(model.cu_thsn); newUser.Properties["nsaccountlock"].Value = AppUtil.ManageNull(model.cu_nsaccountlock); newUser.Properties["CUexpire"].Value = AppUtil.ManageNull(model.cu_CUexpire); newUser.Properties["SCE-Package"].Value = AppUtil.ManageNull(model.cu_sce_package); newUser.Properties["userprincipalname"].Value = AppUtil.ManageNull(model.basic_userprincipalname); newUser.Properties["thaidescription"].Value = AppUtil.ManageNull(model.thaidescription); if (model.system_idm_user_type != IDMUserType.temporary) { /*dspswuser*/ newUser.Properties["objectClass"].Add("dspswuser"); /*mirapointMailUser*/ newUser.Properties["objectClass"].Add("mirapointMailUser"); newUser.Properties["mailHost"].Value = AppUtil.ManageNull(model.cu_mailhost); newUser.Properties["miWmprefCharset"].Value = AppUtil.ManageNull(model.mail_miWmprefCharset); newUser.Properties["miWmprefEmailAddress"].Value = AppUtil.ManageNull(model.mail_miWmprefEmailAddress); newUser.Properties["miWmprefFullName"].Value = AppUtil.ManageNull(model.mail_miWmprefFullName); newUser.Properties["miWmprefReplyOption"].Value = AppUtil.ManageNull(model.mail_miWmprefReplyOption); newUser.Properties["miWmprefTimezone"].Value = AppUtil.ManageNull(model.mail_miWmprefTimezone); /*mirapointUser*/ newUser.Properties["objectClass"].Add("mirapointUser"); //newUser.Properties["miMailExpirePolicy"].Value = AppUtil.ManageNull(model.miMailExpirePolicy); //newUser.Properties["miMailQuota"].Value = AppUtil.ManageNull(model.miMailQuota); //newUser.Properties["miService"].Value = AppUtil.ManageNull(model.miService); //newUser.Properties["miDefaultJunkmailFilter"].Value = AppUtil.ManageNull(model.miDefaultJunkmailFilter); /*ipUser*/ newUser.Properties["objectClass"].Add("ipUser"); newUser.Properties["inetCOS"].Value = AppUtil.ManageNull(model.unix_inetCOS); /*cVPN3000-User-Authorization*/ newUser.Properties["objectClass"].Add("cVPN3000-User-Authorization"); //newUser.Properties["cVPN3000-Access-Hours"].Value = AppUtil.ManageNull(model.cVPN3000_Access_Hours); //newUser.Properties["cVPN3000-Simultaneous-Logins"].Value = AppUtil.ManageNull(model.cVPN3000_Simultaneous_Logins); /*shadowAccount*/ newUser.Properties["objectClass"].Add("shadowAccount"); newUser.Properties["uid"].Value = AppUtil.ManageNull(model.basic_uid); /*mailrecipient*/ newUser.Properties["objectClass"].Add("mailrecipient"); newUser.Properties["mailRoutingAddress"].Value = AppUtil.ManageNull(model.cu_mailRoutingAddress); /*radiusprofile*/ newUser.Properties["objectClass"].Add("radiusprofile"); /*posixaccount*/ newUser.Properties["objectClass"].Add("posixaccount"); newUser.Properties["gecos"].Value = AppUtil.ManageNull(model.cu_gecos); newUser.Properties["gidNumber"].Value = AppUtil.ManageNull(model.unix_gidNumber); newUser.Properties["homeDirectory"].Value = AppUtil.ManageNull(model.unix_homeDirectory); newUser.Properties["loginShell"].Value = AppUtil.ManageNull(model.unix_loginShell); newUser.Properties["uidNumber"].Value = AppUtil.ManageNull(model.unix_uidNumber); } newUser.CommitChanges(); entry.Close(); newUser.Close(); //newUser.Properties["dn"].Value = AppUtil.ManageNull(model.basic_dn); //newUser.Properties["suntype"].Value = AppUtil.ManageNull(model.suntype); return(new Result() { result = true }); } } } catch (Exception ex) { return(new Result() { result = false, Message = ex.Message }); } return(new Result() { result = false }); }