Beispiel #1
0
        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
                });
            }
        }
Beispiel #2
0
        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
            });
        }
Beispiel #3
0
        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
                });
            }
        }
Beispiel #4
0
        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 });
        }
Beispiel #5
0
        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
                });
            }
        }
Beispiel #6
0
        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
                });
            }
        }
Beispiel #7
0
        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
            });
        }
Beispiel #8
0
        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
                });
            }
        }
Beispiel #9
0
        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
                });
            }
        }
Beispiel #10
0
        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));
        }
Beispiel #11
0
        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
            });
        }
Beispiel #12
0
        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
            });
        }