public async Task <ActionResult> Edit(RoleModificationModel model)
        {
            IdentityResult result;

            if (!ModelState.IsValid)
            {
                return(View("Error", new[] { "Role Not Found" }));
            }

            foreach (var userId in model.IdsToAdd ?? Enumerable.Empty <string>())
            {
                var user = await _userManager.FindByIdAsync(userId);

                result = await _userManager.AddToRoleAsync(user, model.RoleName);

                if (!result.Succeeded)
                {
                    return(View("Error", result.Errors));
                }
            }

            foreach (var userId in model.IdsToDelete ?? Enumerable.Empty <string>())
            {
                var user = await _userManager.FindByIdAsync(userId);

                result = await _userManager.RemoveFromRoleAsync(user, model.RoleName);

                if (!result.Succeeded)
                {
                    return(View("Error", result.Errors));
                }
            }

            return(RedirectToAction("Index"));
        }
Пример #2
0
        public async Task <ActionResult> ChangePassword(ChangePasswordViewModel model)

        {
            if (!ModelState.IsValid)

            {
                return(View(model));
            }

            var result = await UserManager.ChangePasswordAsync(User.Identity.GetUserId(), model.OldPassword, model.NewPassword);

            if (result.Succeeded)

            {
                var user = await UserManager.FindByIdAsync(User.Identity.GetUserId());

                if (user != null)

                {
                    await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);
                }

                return(RedirectToAction("Index", new { Message = ManageMessageId.ChangePasswordSuccess }));
            }

            AddErrors(result);

            return(View(model));
        }
Пример #3
0
        public virtual async Task GetProfileDataAsync(ProfileDataRequestContext context)
        {
            var sub = context.Subject?.GetSubjectId();

            if (sub == null)
            {
                throw new Exception("No sub claim present");
            }

            var user = await UserManager.FindByIdAsync(sub);

            if (user == null)
            {
                Logger?.LogWarning("No user found matching subject Id: {0}", sub);
            }
            else
            {
                var principal = await ClaimsFactory.CreateAsync(user);

                if (principal == null)
                {
                    throw new Exception("ClaimsFactory failed to create a principal");
                }

                context.AddRequestedClaims(principal.Claims);
                AddRoleClaims(context, principal);
            }
        }
        public async Task <ActionResult> Edit()
        {
            var adminUser = await _userManager.FindByIdAsync(User.Id);

            var model = BuildEditProfileViewModel(adminUser);

            return(View(model));
        }
Пример #5
0
        public async Task <IActionResult> LoginAs(string id)
        {
            var user = await _userManager.FindByIdAsync(id);

            await _signInManager.SignInAsync(user, isPersistent : false);

            return(RedirectToAction("Index", "Home"));
        }
Пример #6
0
        public async Task <IActionResult> Profile(int id)
        {
            //Gets currently logged in user
            AppUser currentUser = await _appUserManager.GetUserAsync(User);

            //Returns List<Post> of user whose profile is being viewed, as split query,
            //because of cartesian explosion
            List <Post> userPosts = await _postRepository.GetAll()
                                    .Where(p => p.AppUserId == id)
                                    .Include(p => p.Post_Ingredients)
                                    .ThenInclude(pi => pi.Ingredient)
                                    .Include(p => p.AppUser)
                                    .Include(p => p.Comments)
                                    .ThenInclude(c => c.Commentator)
                                    .OrderByDescending(p => p.TimeOfPosting)
                                    .AsSplitQuery()
                                    .AsNoTracking()
                                    .ToListAsync();

            //Convers Posts to PostsModel type
            List <PostModel> userPostsModel = userPosts.ToPostModel()
                                              .ToList();

            #region Most efficient query for userPostsModel, use it when entity framework core 6.0 gets released!! AsSplitQuery() doesn't work on projections yet!!
            //Most efficient query for postmodel, use it when entity framework core 6.0 gets released!! Don't forget to chain AsSplitQuery()!!
            //var userPostsModel = _postRepository.GetAll()
            //                                    .Where(p => p.AppUserId == id)
            //                                    .ToPostModelTest()
            //                                    .ToList();
            #endregion

            //Gets the user whose profile is being viewed
            AppUserModel userModelProfile = await _appUserManager.FindByIdAsync(id.ToString())
                                            .ContinueWith(au => au.Result.ToAppUserModelBaseInfo());

            //Checks and sets bool if current user is following the one whose profile is being viewed
            userModelProfile.IsBeingFollowed = _user_FollowsRepository.GetAll()
                                               .Any(u => u.FollowerId == currentUser.Id && u.FollowsId == id);

            //Gets all the posts which current user has liked from user whose profile he is visiting
            List <Yummy_Post> currentUsersYummedPosts = await _yummy_PostRepository.GetAll()
                                                        .Where(yp => yp.AppUserId == currentUser.Id && yp.PostAppUserId == id)
                                                        .ToListAsync();

            //Sets IsPostYummed property if current user has already liked the post, would probably be the best to denormalize database instead of doing this
            foreach (var yummedPost in currentUsersYummedPosts)
            {
                userPostsModel.SingleOrDefault(p => p.Id == yummedPost.PostId).IsPostYummed = true;
            }

            //To pass necessary data for view
            ViewBag.UserProfile = userModelProfile;
            ViewBag.CurrentUser = currentUser;

            return(View(userPostsModel));
        }
        public async Task <ActionResult> Details(string id)
        {
            AppUser user = await _userManager.FindByIdAsync(id);

            if (user != null)
            {
                UserAdminViewModel viewModel = Mapper.Map <UserAdminViewModel>(user);
                return(View(viewModel));
            }
            return(Redirect("Index"));
        }
Пример #8
0
        public async Task <IActionResult> Update(string id)
        {
            AppUser user = await userManager.FindByIdAsync(id);

            if (user != null)
            {
                return(View(user));
            }
            else
            {
                return(RedirectToAction("Index"));
            }
        }
Пример #9
0
        public ActionResult Edit(long adminId)
        {
            AppUser user  = userManager.FindByIdAsync(adminId).Result;
            var     roles = roleManager.Roles.ToList();

            AdminUserEditModel model = new AdminUserEditModel {
                AdminId  = user.Id,
                UserName = user.UserName,
                Password = user.PasswordHash,
                Roles    = roles
            };

            return(View(model));
        }
Пример #10
0
        public async Task <Boolean> BeforeSave(Int64 UserId, Object beforeData)
        {
            var before = beforeData as ExpandoObject;

            var userId = before.Eval <Int64>("User.Id");
            var pwd    = before.Eval <String>("User.Password");

            var token = await _userManager.GeneratePasswordResetTokenAsync(userId);

            var ir = await _userManager.ResetPasswordAsync(userId, token, pwd);

            if (!ir.Succeeded)
            {
                String errors = String.Empty;
                foreach (var e in ir.Errors)
                {
                    errors += "\n" + e;
                }
                throw new SecurityException("Set password failed." + errors);
            }
            var user = await _userManager.FindByIdAsync(userId);

            await _userManager.UpdateAsync(user);

            return(true);
        }
Пример #11
0
        //[Authorize(Roles ="DeleteUser")]
        public async Task <HttpResponseMessage> Delete(HttpRequestMessage request, string id)
        {
            var identity = (ClaimsIdentity)User.Identity;
            IEnumerable <Claim> claims = identity.Claims;
            var appUser = await AppUserManager.FindByIdAsync(id);

            var result = await AppUserManager.DeleteAsync(appUser);

            if (result.Succeeded)
            {
                Log log = new Log()
                {
                    AppUserId = claims.FirstOrDefault().Value,
                    Content   = Notification.DELETE_USER,
                    Created   = DateTime.Now
                };
                _logService.Create(log);
                _logService.Save();
                return(request.CreateResponse(HttpStatusCode.OK, id));
            }
            else
            {
                return(request.CreateErrorResponse(HttpStatusCode.OK, string.Join(",", result.Errors)));
            }
        }
Пример #12
0
        /// <summary>
        /// Handle user update.
        /// </summary>
        /// <param name="command">Command.</param>
        public async Task HandleUpdateUser(UpdateUserCommand command)
        {
            var user = await userManager.FindByIdAsync(command.UserId);

            if (user == null)
            {
                throw new NotFoundException("User not found.");
            }

            user.Email     = command.Email;
            user.UserName  = command.Email;
            user.FirstName = command.FirstName;
            user.LastName  = command.LastName;
            user.Country   = command.Country;
            user.City      = command.City;
            user.UpdatedAt = DateTime.Now;
            user.Clean();

            command.Result = await userManager.UpdateAsync(user);

            if (!command.Result.Succeeded)
            {
                throw new IdentityException(command.Result);
            }

            command.HasPassword = userManager.SupportsUserPassword;
        }
Пример #13
0
        public async Task <HttpResponseMessage> ChangePassword(HttpRequestMessage request, string id, string password, string newPassword)
        {
            if (User != null && MemoryCacheHelper.RemoveUserEditByAdmin(User.Identity.Name))
            {
                return(request.CreateErrorResponse(HttpStatusCode.BadRequest, CommonConstants.Error_Edit_By_Admin));
            }
            if (!string.IsNullOrEmpty(id))
            {
                var appUser = await AppUserManager.FindByIdAsync(id);

                if (appUser != null)
                {
                    bool passwordCheck = await AppUserManager.CheckPasswordAsync(appUser, password);

                    if (passwordCheck)
                    {
                        var result = await AppUserManager.ChangePasswordAsync(appUser.Id, password, newPassword);

                        return(request.CreateResponse(HttpStatusCode.OK, Common.Constants.MessageSystem.ChangePasswordSuccess));
                    }
                    return(request.CreateErrorResponse(HttpStatusCode.BadRequest, Common.Constants.MessageSystem.ErrorOldPassword));
                }
                return(request.CreateErrorResponse(HttpStatusCode.BadRequest, Common.Constants.MessageSystem.UserNotFound));
            }
            return(request.CreateErrorResponse(HttpStatusCode.BadRequest, Common.Constants.MessageSystem.ErrorIdNull));
        }
Пример #14
0
        public async Task <IHttpActionResult> ResetPassword(JObject value)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            dynamic data   = value;
            var     pass   = (string)data.pass;
            var     code   = (string)data.code;
            var     userId = (string)data.userId;

            //code = HttpUtility.UrlDecode(code);

            var user = await AppUserManager.FindByIdAsync(userId);

            if (user == null)
            {
                return(BadRequest("El usuario es incorrecto."));
            }
            var result = await AppUserManager.ResetPasswordAsync(user.Id, code, pass);

            if (result.Succeeded)
            {
                return(Ok());
            }
            return(BadRequest("El enlace de recuperación ya no es valido."));
        }
Пример #15
0
        public static MvcHtmlString GetUserNameAndName(this HtmlHelper html, long id)
        {
            AppUserManager mgr  = HttpContext.Current.GetOwinContext().GetUserManager <AppUserManager>();
            var            user = mgr.FindByIdAsync(id).Result;

            return(new MvcHtmlString(string.Format("{0}", user.UserName)));
        }
Пример #16
0
        public HttpResponseMessage Details(HttpRequestMessage request, string id)
        {
            if (string.IsNullOrEmpty(id))
            {
                return(request.CreateResponse(HttpStatusCode.BadRequest, nameof(id) + Common.Constants.MessageSystem.NoValues));
            }
            var group = _groupService.GetGroupById(id);

            if (group == null)
            {
                return(request.CreateResponse(HttpStatusCode.NoContent, Common.Constants.MessageSystem.NoData));
            }
            else
            {
                var groupViewModel = Mapper.Map <Group, GroupViewModel>(group);
                var groupLeadID    = _groupService.GetGroupLeadIdByGroup(group.ID);
                if (groupLeadID != null)
                {
                    groupViewModel.GroupLead = AppUserManager.FindByIdAsync(groupLeadID).Result.FullName;
                }
                else
                {
                    groupViewModel.GroupLead = CommonConstants.DefaultGroupLeader;
                }
                return(request.CreateResponse(HttpStatusCode.OK, groupViewModel));
            }
        }
        public IHttpActionResult ConfirmPasswordRecovery(Guid userId, string newPassword = "", string code = "")
        {
            if (string.IsNullOrWhiteSpace(code))
            {
                Logger.ServiceLog.Warn($"Пользователь {userId} не указал код.");
                return(GetErrorFromModel("code", "Требуется код."));
            }
            var user = AppUserManager.FindByIdAsync(userId);

            if (user == null)
            {
                Logger.ServiceLog.Warn($"Пользователь с id {userId} не зарегистрирован.");
                GetErrorFromModel("userId", $"Пользователь с id {userId} не зарегистрирован.");
            }
            code = HttpUtility.UrlDecode(code);
            var result = AppUserManager.ResetPassword(userId, code, newPassword);

            if (result.Succeeded)
            {
                Logger.ServiceLog.Info($"Пользователю {userId} успешно изменил пароль.");
                return(Ok());
            }

            Logger.ServiceLog.Warn($"Пользователь с id {userId} не смог изменить пароль.");
            return(GetErrorResult(result));
        }
        public async Task <ActionResult> VerifyEmailRequest()
        {
            var userId = User.Id;

            //
            if (await _appUserManager.IsEmailConfirmedAsync(userId))
            {
                return(RedirectToAction(nameof(VerifyEmail), new { status = AccountActionStatus.VerifyEmailResponseSuccess.ToLowerCaseString() }));
            }

            //
            var adminUser = await _appUserManager.FindByIdAsync(userId);

            var mailModel = new AccountVerifyEmailMessageViewModel()
            {
                Name             = adminUser.FullName ?? adminUser.UserName,
                PageTitle        = GetLocalizedString <AreaResources>("VerifyEmail"),
                ConfirmationLink = Url.Action("VerifyEmailResponse", "Account", new
                {
                    verifyToken = await _appUserManager.GenerateEmailConfirmationTokenAsync(adminUser.Id)
                }, protocol: Request.Url.Scheme)
            };

            var subject = $"[{GetLocalizedString("AppName")}] {mailModel.PageTitle}";
            var message = RenderViewToString("VerifyEmailMessage", model: mailModel);

            _emailDispatcherService.Dispatch(message, subject, new MailAddress(adminUser.Email, adminUser.FullName));

            return(RedirectToAction(nameof(VerifyEmail), new { status = AccountActionStatus.VerifyEmailRequestSent.ToLowerCaseString() }));
        }
        public async Task <IHttpActionResult> GetUser(Guid id)
        {
            var user = await AppUserManager.FindByIdAsync(id);

            return(user != null?Ok(TheModelFactory.Create(user))
                       : GetErrorFromModel("id", "Не удается найти пользователя"));
        }
Пример #20
0
        public async Task <RepositoryResult <IEnumerable <MakerInterfaceModel> > > SetMakersByUSerIdAsync(int userId, List <MakerInterfaceModel> setMakers)
        {
            try
            {
                if (userId <= 0)
                {
                    return(new RepositoryResult <IEnumerable <MakerInterfaceModel> >(HttpStatusCode.BadRequest));
                }
                var user = await AppUserManager.FindByIdAsync(userId);

                if (user == null)
                {
                    return(new RepositoryResult <IEnumerable <MakerInterfaceModel> >(HttpStatusCode.NotFound));
                }

                using (DataContext dbContext = DataContext.Create())
                {
                    dbContext.Database.ExecuteSqlCommand(RepositoryResource.IncrementResetUserMaker);

                    using (DbContextTransaction tx = dbContext.Database.BeginTransaction(System.Data.IsolationLevel.Serializable))
                    {
                        var setMakerIds = setMakers.Select(m => m.Id).OrderBy(x => x).ToList();
                        var makerIds    = dbContext.MakerModels.Select(x => x.Id).OrderBy(x => x).ToList <int>();

                        IQueryable <UserMakerModel> userMakers = dbContext.UserMakerModels.Where(x => x.UserModelId == userId).OrderBy(x => x.MakerModelId);

                        foreach (int item in makerIds)
                        {
                            UserMakerModel check = userMakers.Where(x => x.MakerModelId == item).FirstOrDefault();
                            if (check == null && setMakerIds.Contains(item))
                            {
                                check              = new UserMakerModel();
                                check.UserModelId  = userId;
                                check.MakerModelId = item;
                                dbContext.UserMakerModels.Add(check);
                            }
                            else if (check != null && setMakerIds.Contains(item) && check.Deleted == true)
                            {
                                check.Deleted = false;
                                dbContext.Entry(check).State = EntityState.Modified;
                            }
                            else if (check != null && !setMakerIds.Contains(item) && check.Deleted == false)
                            {
                                check.Deleted = true;
                                dbContext.Entry(check).State = EntityState.Modified;
                            }
                        }
                        dbContext.SaveChanges();
                        tx.Commit();
                    }
                    dbContext.Database.ExecuteSqlCommand(RepositoryResource.IncrementResetUserMaker);

                    return(new RepositoryResult <IEnumerable <MakerInterfaceModel> >(HttpStatusCode.OK, setMakers));
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Пример #21
0
        public async Task <RepositoryResult <IEnumerable <MakerInterfaceModel> > > GetMakersByUserIdAsync(int userId)
        {
            try
            {
                if (userId <= 0)
                {
                    return(new RepositoryResult <IEnumerable <MakerInterfaceModel> >(HttpStatusCode.BadRequest));
                }
                var user = await AppUserManager.FindByIdAsync(userId);

                if (user == null)
                {
                    return(new RepositoryResult <IEnumerable <MakerInterfaceModel> >(HttpStatusCode.NotFound));
                }
                using (var repository = new MakerRepository())
                {
                    var makerlist = repository.GetMakersByUserIdForInterface(userId);
                    if (makerlist == null)
                    {
                        return(new RepositoryResult <IEnumerable <MakerInterfaceModel> >(HttpStatusCode.NotFound));
                    }
                    return(new RepositoryResult <IEnumerable <MakerInterfaceModel> >(HttpStatusCode.OK, makerlist));
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Пример #22
0
        public async Task <RepositoryResult <UserInterfaceModel> > CreateUserAsync(UserInterfaceModel createUser)
        {
            try
            {
                if (await AppUserManager.FindByIdAsync(createUser.Id) != null)
                {
                    return(new RepositoryResult <UserInterfaceModel>(HttpStatusCode.Conflict));
                }

                if (string.IsNullOrWhiteSpace(createUser.NewPassword))
                {
                    return(new RepositoryResult <UserInterfaceModel>(HttpStatusCode.BadRequest, "パスワードは必須項目です。"));
                }

                var user = new UserModel();
                user.UserName = createUser.UserName;
                user.Name     = createUser.Name;
                user.Email    = createUser.Email;
                user.Enabled  = createUser.Enabled;

                var result = new RepositoryResult <UserInterfaceModel>(HttpStatusCode.Created);
                result.identityResult = await AppUserManager.CreateAsync(user, createUser.NewPassword);

                if (!result.identityResult.Succeeded)
                {
                    result.Code = HttpStatusCode.BadRequest;
                }
                return(result);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public async Task <IHttpActionResult> ConfirmEmail(Guid userId, string code = "")
        {
            if (string.IsNullOrWhiteSpace(code))
            {
                Logger.ServiceLog.Warn($"Пользователь {userId} не указал код.");
                return(GetErrorFromModel("code", "Требуется код."));
            }
            var user = await AppUserManager.FindByIdAsync(userId);

            if (user == null)
            {
                Logger.ServiceLog.Warn($"Пользователь с {userId} не зарегистрирован в БД");
                return(GetErrorFromModel("userId", "Такого пользователя не существует."));
            }
            code = HttpUtility.UrlDecode(code);

            var result = await AppUserManager.ConfirmEmailAsync(userId, code);

            if (result.Succeeded)
            {
                Logger.ServiceLog.Info($"Пользователь {user.Id} успешно подтвердил аккаунт.");
                return(Ok());
            }

            Logger.ServiceLog.Warn($"Пользователь с {userId} не подтвердил аккаунт");
            return(GetErrorResult(result));
        }
Пример #24
0
        public async Task <IHttpActionResult> Me()
        {
            var userId = User.Identity.GetUserId();
            var user   = await AppUserManager.FindByIdAsync(userId);

            return(Ok(TheModelFactory.Create(user)));
        }
Пример #25
0
        public async Task AfterSave(Object beforeData, Object afterData)
        {
            var before = beforeData as ExpandoObject;
            var after  = afterData as ExpandoObject;

            var userId = after.Eval <Int64>("User.Id");
            var pwd    = before.Eval <String>("User.Password");

            var token = await _userManager.GeneratePasswordResetTokenAsync(userId);

            var ir = await _userManager.ResetPasswordAsync(userId, token, pwd);

            if (!ir.Succeeded)
            {
                String errors = String.Empty;
                foreach (var e in ir.Errors)
                {
                    errors += "\n" + e;
                }
                throw new SecurityException("Set password failed." + errors);
            }
            var user = await _userManager.FindByIdAsync(userId);

            user.EmailConfirmed = true;
            user.SetModified(UserModifiedFlag.EmailConfirmed);
            await _userManager.UpdateAsync(user);
        }
Пример #26
0
        public static MvcHtmlString GetUserName(this HtmlHelper html, string id)
        {
            AppUserManager mgr
                = HttpContext.Current.GetOwinContext().GetUserManager <AppUserManager>();

            return(new MvcHtmlString(mgr.FindByIdAsync(id).Result.UserName));
        }
Пример #27
0
        public async Task <HttpResponseMessage> SendMailMulti(HttpRequestMessage request, [FromBody] List <SendMailModel> sendMailModel)
        {
            Func <HttpResponseMessage> func = () =>
            {
                foreach (var items in sendMailModel)
                {
                    string Body                   = "";
                    string BodyInDelegate         = "";
                    string BodyCreateExplan       = "";
                    bool   resultsendmailDelegate = true;
                    string FullName               = "";
                    if (items.Action.Equals(CommonConstants.StatusRejected.ToLower()))
                    {
                        Body = _systemService.getBodyMail(MailConsstants.TemplateRejectMail, items.Title, AppUserManager.FindByIdAsync(items.CreateBy).Result.FullName, items.Action, items.EmailType, items.ReasonReject, items.Category, null, null, null, null, null, items.OTDate, items.OTDateType, items.OTTimeType, items.StartTime, items.EndTime, items.ExplanationDate, items.ExplanationReason, items.Actual, items.Description, FullName);
                    }
                    else if (items.Action.Equals(CommonConstants.StatusCancelled.ToLower()))
                    {
                        Body = _systemService.getBodyMail(MailConsstants.TemplateSendMailAuto, items.Title, AppUserManager.FindByIdAsync(items.CreateBy).Result.FullName, items.Action, items.EmailType, null, items.Category, null, null, null, null, null, items.OTDate, items.OTDateType, items.OTTimeType, items.StartTime, items.EndTime, items.ExplanationDate, items.ExplanationReason, items.Actual, items.Description, FullName);
                    }
                    else if (items.Action.Equals(CommonConstants.StatusDelegation.ToLower()))
                    {
                        Body          = _systemService.getBodyMail(MailConsstants.TemplateDelegationToMember, items.Title, AppUserManager.FindByIdAsync(items.CreateBy).Result.FullName, items.Action, items.EmailType, null, items.Category, null, null, null, null, null, items.OTDate, items.OTDateType, items.OTTimeType, items.StartTime, items.EndTime, items.ExplanationDate, items.ExplanationReason, items.Actual, items.Description, FullName);
                        items.toEmail = new string[] { AppUserManager.FindByIdAsync(items.toEmail[0]).Result.Email };
                    }
                    else
                    {
                        Body = _systemService.getBodyMail(MailConsstants.TemplateSendMailAuto, items.Title, AppUserManager.FindByIdAsync(items.CreateBy).Result.FullName, items.Action, items.EmailType, null, items.Category, items.GroupName, items.RequestTypeName, items.DetailReason, items.StartDate, items.EndDate, items.OTDate, items.OTDateType, items.OTTimeType, items.StartTime, items.EndTime, items.ExplanationDate, items.ExplanationReason, items.Actual, items.Description, FullName);
                    }
                    var result = _systemService.SendMail(items.toEmail, items.ccMail, items.EmailSubject, Body);
                }
                return(request.CreateResponse(HttpStatusCode.OK, true));
            };

            return(await CreateHttpResponse(request, func));
        }
Пример #28
0
        public async Task <Object> InvokeAsync(Int32 TenantId, Int64 UserId, Int64 Id, ExpandoObject User)
        {
            if (!_host.IsMultiTenant)
            {
                throw new InvalidOperationException("CreateTenantUserHandleris available only in multitenant environment");
            }

            User.Set("Tenant", TenantId);
            await _dbContext.ExecuteExpandoAsync(_host.CatalogDataSource, "a2security.[CreateUserSimple]", User);

            Int64 userId = User.Get <Int64>("Id");

            var token = await _userManager.GeneratePasswordResetTokenAsync(userId);

            var identityResult = await _userManager.ResetPasswordAsync(userId, token, User.Get <String>("Password"));

            if (!identityResult.Succeeded)
            {
                throw new InvalidOperationException(String.Join(",", identityResult.Errors));
            }
            var newAppUser = await _userManager.FindByIdAsync(userId);

            await _dbContext.ExecuteAsync <AppUser>(_host.TenantDataSource, "a2security.CreateTenantUser", newAppUser);

            var result = new ExpandoObject();

            result.Set("Id", userId);

            return(result);
        }
Пример #29
0
        public async Task <IHttpActionResult> GetApplicationUser(string id)
        {
            var user = await AppUserManager.FindByIdAsync(id);

            var coachRole = AppRoleManager.FindByName("Coach");

            if (user == null)
            {
                return(NotFound());
            }
            var response = new GetUserResponse
            {
                Item = new UserHttpResponse
                {
                    Id        = user.Id,
                    FirstName = user.FirstName,
                    LastName  = user.LastName,
                    IsCoach   = user.Roles.Any(j => j.RoleId == coachRole.Id),
                    Email     = user.UserName,
                    RoleIds   = user.Roles.Select(i => i.RoleId).ToList(),
                    Timezone  = user.Timezone,
                    CVLink    = user.CVLink,
                    Webex     = user.Webex,
                },
            };

            response.UsageCount = AppDb.CoachingPrograms
                                  .Count(i =>
                                         i.Coach.Id == id ||
                                         i.Coachee.Id == id);
            return(Ok(response));
        }
Пример #30
0
        //[Permission(Action = "Update", Function = "USER")]
        public async Task <HttpResponseMessage> UpdateProfile(HttpRequestMessage request, AppUserViewModel applicationUserViewModel)
        {
            if (ModelState.IsValid)
            {
                var appUser = await AppUserManager.FindByIdAsync(applicationUserViewModel.Id);

                try
                {
                    appUser.UpdateUser(applicationUserViewModel);
                    var result = await AppUserManager.UpdateAsync(appUser);

                    if (result.Succeeded)
                    {
                        var userRoles = await AppUserManager.GetRolesAsync(appUser.Id);

                        var selectedRole = applicationUserViewModel.Roles.ToArray();
                        selectedRole = selectedRole ?? new string[] { };
                        await AppUserManager.RemoveFromRolesAsync(appUser.Id, userRoles.ToArray());

                        await AppUserManager.AddToRolesAsync(appUser.Id, selectedRole.ToArray());

                        return(request.CreateResponse(HttpStatusCode.OK, applicationUserViewModel));
                    }
                    return(request.CreateErrorResponse(HttpStatusCode.BadRequest, Common.Constants.MessageSystem.MessageDuplicateEmail));
                }
                catch (NameDuplicatedException dex)
                {
                    return(request.CreateErrorResponse(HttpStatusCode.BadRequest, dex.Message));
                }
            }
            return(request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState));
        }
        private static async Task<AppUser> GetTargetUser(OAuthGrantCustomExtensionContext context, AppUserManager repo) {
            string targetUserIdString = context.Parameters["userid"];
            int targetUserId;
            Int32.TryParse(targetUserIdString, out targetUserId);

            var targetUser = await repo.FindByIdAsync(targetUserId);
            return targetUser;
        }