示例#1
0
        public async static Task <bool> IsExistsUser(ISysRepository repo, UserManager <IdentityUser> userManager, string email)
        {
            MxReturnCode <bool> rc = new MxReturnCode <bool>("IdentityDb.CreateUser()", false);

            if ((repo == null) || (userManager == null) || (email == null))
            {
                rc.SetError(3160201, MxError.Source.Param, "repo, userManager or email is null", MxMsgs.MxErrUnexpected);
            }
            else
            {
                try
                {
                    //check identity
                    var result = await repo.GetUserAsync(email);

                    rc += result;
                    if (result.IsSuccess())
                    {
                        rc.SetResult(true);
                    }
                    else
                    {
                        rc.SetResult(false);
                    }
                }
                catch (Exception e)
                {
                    rc.SetError(3160202, MxError.Source.Exception, e.Message, MxMsgs.MxErrUnknownException, true);
                }
            }
            return(rc.GetResult());
        }
示例#2
0
        public async static Task <MxReturnCode <int> > CreateUser(ISysRepository repo, UserManager <IdentityUser> userManager, string gdprRoleName, string password, string email, string fullName)
        {
            MxReturnCode <int> rc = new MxReturnCode <int>("IdentityDb.CreateUser()", -1);

            if ((repo == null) || (userManager == null) || (gdprRoleName == null) || (password == null) || (email == null) || (fullName == null))
            {
                rc.SetError(3160101, MxError.Source.Param, "repo, userManager, roleName, password, email, or fullname is null", MxMsgs.MxErrUnexpected);
            }
            else
            {
                try
                {
                    if (await IsExistsUser(repo, userManager, email) == true)
                    {
                        rc.SetResult(0);
                    }
                    else
                    {
                        if (await userManager.FindByEmailAsync(email) == null)
                        {
                            IdentityUser user = new IdentityUser()
                            {
                                UserName = email,
                                Email    = email
                            };
                            await userManager.CreateAsync(user, password);

                            IdentityResult result = await userManager.AddToRoleAsync(user, gdprRoleName);

                            if (result.Succeeded == false)
                            {
                                rc.SetError(3160102, MxError.Source.Sys, WebErrorHandling.GetIdentityErrors(result, $"cannot create role {gdprRoleName}"));
                            }
                        }
                        if (rc.GetErrorCode() == MxErrorLog.UnknownError)
                        {
                            //if (await repository.IsGdprUserExists(email) )

                            //var resCnt = await repository.CreateGDPRUser();
                            //rc += resCnt;
                            //if (res.IsSuccess())
                            //{
                            //   rc.SetResult(true);
                            //}
                        }
                        rc.SetResult(1);
                    }
                }
                catch (Exception e)
                {
                    rc.SetError(3160102, MxError.Source.Exception, e.Message, MxMsgs.MxErrUnknownException, true);
                }
                if (rc.IsError())
                {
                    var user = await userManager.FindByEmailAsync(email);

                    if (user != null)
                    {
                        await userManager.DeleteAsync(user);
                    }
                }
            }
            return(rc);
        }
示例#3
0
 public UserService(ISysRepository sysRepository)
 {
     this.sysRepository = sysRepository;
 }