public virtual ActionResult Login(Model.AuthLoginData model) { var message = ""; try { if (!AppCore.GetUserContextManager().GetCurrentUserContext().IsGuest) { throw new BehaviourException("Вы уже авторизованы!"); } if (string.IsNullOrEmpty(model.login)) { throw new BehaviourException("Некорректно введен логин!"); } if (string.IsNullOrEmpty(model.pass)) { throw new BehaviourException("Некорректно введен пароль!"); } if (ModelState.IsValid) { var result = AppCore.Get <WebUserContextManager>().CreateUserContext(model.login, model.pass, out var userContext, out var resultReason); if (result == eAuthResult.Success) { AppCore.Get <Binding.Providers.SessionBinder>().BindUserContextToRequest(userContext); AppCore.GetUserContextManager().SetCurrentUserContext(userContext); //message = "Авторизация прошла успешно!"; } else { throw new BehaviourException(resultReason); } } } catch (BehaviourException ex) { Module.RegisterEvent(EventType.Warning, "Ошибка авторизации", ex.Message, ex.InnerException); message = ex.Message; } catch (Exception ex) { Module.RegisterEvent(EventType.Warning, "Ошибка авторизации - непредвиденная", ex.Message, ex.InnerException); message = "Неожиданная ошибка во время авторизации. Попробуйте еще раз или обратитесь в техническую поддержку."; } if (!ModelState.IsValid || !string.IsNullOrEmpty(message)) { this.RegisterEventInvalidModel("Форма авторизации", ignoreParamsKeys: new List <string>() { nameof(model.pass) }); } if (!AppCore.GetUserContextManager().GetCurrentUserContext().IsGuest) { if (!string.IsNullOrEmpty(model?.urlFrom) && Url.IsLocalUrl(model.urlFrom)) { return(new RedirectResult(model.urlFrom, false)); } var redirect = Module.GetRememberedUserContextRequestedAddressWhenRedirectedToAuthorization(); if (redirect != null) { return(new RedirectResult(redirect.ToString(), false)); } } this.assign("authorized", !AppCore.GetUserContextManager().GetCurrentUserContext().IsGuest); return(View("login.cshtml", new Design.Model.Login() { Result = message })); }
public ActionResult LoginJson(Model.AuthLoginData model) { var success = false; var message = ""; try { if (!AppCore.GetUserContextManager().GetCurrentUserContext().IsGuest) { throw new BehaviourException("Вы уже авторизованы!"); } if (string.IsNullOrEmpty(model.login)) { throw new BehaviourException("Некорректно введен логин!"); } if (string.IsNullOrEmpty(model.pass)) { throw new BehaviourException("Некорректно введен пароль!"); } if (ModelState.IsValid) { var result = AppCore.Get <WebUserContextManager>().CreateUserContext(model.login, model.pass, out var userContext, out var resultReason); switch (result) { case eAuthResult.Success: AppCore.Get <Binding.Providers.SessionBinder>().BindUserContextToRequest(userContext); AppCore.GetUserContextManager().SetCurrentUserContext(userContext); message = "Авторизация прошла успешно!"; success = true; break; case eAuthResult.AuthDisabled: case eAuthResult.AuthMethodNotAllowed: case eAuthResult.BlockedUntil: case eAuthResult.MultipleFound: case eAuthResult.NothingFound: case eAuthResult.RegisterDecline: case eAuthResult.RegisterNeedConfirmation: case eAuthResult.RegisterWaitForModerate: case eAuthResult.WrongAuthData: case eAuthResult.Disabled: case eAuthResult.YetAuthorized: ModelState.AddModelError(nameof(model.login), resultReason); break; case eAuthResult.WrongPassword: ModelState.AddModelError(nameof(model.pass), resultReason); break; default: throw new BehaviourException(resultReason); } } } catch (BehaviourException ex) { Module.RegisterEvent(EventType.Warning, "Ошибка авторизации", ex.Message, ex.InnerException); message = ex.Message; } catch (Exception ex) { Module.RegisterEvent(EventType.Warning, "Ошибка авторизации - непредвиденная", ex.Message, ex.InnerException); message = "Неожиданная ошибка во время авторизации. Попробуйте еще раз или обратитесь в техническую поддержку."; } if (!ModelState.IsValid || !string.IsNullOrEmpty(message)) { this.RegisterEventInvalidModel("Форма авторизации JSON", ignoreParamsKeys: new List <string>() { nameof(model.pass) }); } return(this.ReturnJson(success, message, new { authorized = !AppCore.GetUserContextManager().GetCurrentUserContext().IsGuest, admin = this.Module.CheckPermission(ModulesConstants.PermissionManage) })); }