// POST: api/AccountApi public async Task<MinimalRegistrationResponse> Post([FromBody]UserMinimalRegistrationDto registrationDto) { var logger = LogManager.GetCurrentClassLogger(); string encryptionPassword = System.Configuration.ConfigurationManager.AppSettings["encryptionPassword"]; //var userName = EncryptedString.DecryptString(registrationDto.UserName, encryptionPassword); //var password = EncryptedString.DecryptString(registrationDto.Password, encryptionPassword); //var culture = EncryptedString.DecryptString(registrationDto.CultureName, encryptionPassword); var result = new MinimalRegistrationResponse(); try { using (var repository = RepositoryFactory.GetInstance()) { var userManager = new MyMentorUserManager(repository, null); result = await userManager.RegisterUserMinimal(registrationDto); } } catch (Exception ex) { logger.Log(LogLevel.Error, ex.ToString); result.Code = false; result.Exception = ex.ToString(); result.MesaageCode = "IPHONE_STRING_SIGN_UP_GENERAL_ERROR"; throw; } return result; }
public ActionResult StopImpersonation() { using (var repository = RepositoryFactory.GetInstance()) { var userManager = new MyMentorUserManager(repository, Session, HttpContext); userManager.StopImpersonation(); return RedirectToAction("index", "MyAccount"); } }
public async Task<ActionResult> Impersonate(string userName) { using (var repository = RepositoryFactory.GetInstance()) { var userManager = new MyMentorUserManager(repository, Session); await userManager.ImpersonateUser(userName); return RedirectToAction("index", "Home"); } }
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl) { if (ModelState.IsValid) { var repository = RepositoryFactory.GetInstance(Session); var logException = default(Exception); var userManager = new MyMentorUserManager(repository, Session); try { var user = await userManager.Login(model.UserName, model.Password, Session); var adminData = user.GetPointerObject<UserAdminData>("adminData"); user.GetPointerObject<BL.Models.SugNirut>("sugNirut"); var userStatusObj = adminData.GetPointerObject<ParseObject>("userStatus"); var userStatus = userStatusObj.GetString("status"); var userStatusTitle = userStatusObj.GetLocalizedField("statusTitle"); var prohibitedStatuses = new[] {"blocked", "hold"}; if (prohibitedStatuses.Contains(userStatus)) { ParseUser.LogOut(); Session["user"] = null; ModelState.AddModelError("", string.Format(MyMentorResources.userNotAllowedToLogin, userStatusTitle)); return View(model); } if (userStatus == UserStatusStrings.AppUser) { return RedirectToAction("UpdateStudent"); } var prefferences = new UserPrefferences { SelectedLanguage = user.GetPointerObjectId("interfaceLanguage"), SelectedContentType = user.GetPointerObjectId("contentType"), SelectedCurrency = user.GetPointerObjectId("currency") }; var prefferencesManager = new UserPrefferencesManager(repository, HttpContext); prefferencesManager.SetUserPrefferences(prefferences, Session.GetLoggedInUser() == null); SetPurchases(repository, user); if (model.RememberMe) { var ticket = new FormsAuthenticationTicket(1, model.UserName, DateTime.Now, DateTime.Now.AddMinutes(30), true, model.Password, FormsAuthentication.FormsCookiePath); string encTicket = FormsAuthentication.Encrypt(ticket); // Create the cookie. var authCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket); authCookie.Expires = DateTime.Now.AddYears(1); Response.Cookies.Add(authCookie); } var webCacheProvider = new WebCacheProvider(System.Web.HttpContext.Current); var currencyRatesService = new CurrencyRatesService(repository, webCacheProvider,System.Configuration.ConfigurationManager.AppSettings["bankServiceUrl"]); currencyRatesService.UpdateRates(); } catch (Exception ex) { logException = ex; mLogger.Log(LogLevel.Error, ex); ModelState.AddModelError("", MyMentorResources.passwordIncorrect); } finally { repository.Dispose(); } if (logException != null) { await ParseLogger.Log("login", logException); } if (Session.GetLoggedInUser() != null) { return RedirectToLocal(returnUrl); } } // If we got this far, something failed, redisplay form return View(model); }
public async Task<ActionResult> Register(RegisterViewModel model) { var repository = new ParseRepository(new WebCacheProvider(HttpContext.ApplicationInstance.Context)); model.DeviceTypes = repository.FindDeviceTypes(); model.Countries = repository.FindCountriesNameAndId(); if (ModelState.IsValid) { Exception logException = default(Exception); var userManager = new MyMentorUserManager(repository, Session); try { model.CountryOfResidenceTitle = model.Countries[model.CountryOfResidence]; model.ContentTypeId = WorldIsRetriverFactory.GetWorldId(HttpContext, Session); model.CurrencyId = (repository.FindResidenceById(model.CountryOfResidence)).CurrencyId; await userManager.RegisterUser(model); var parseUser = await userManager.Login(model.UserName, model.Password, Session); Mailer.SendRegistrationSuccess(parseUser); model.ShowSuccessMessage = true; ViewBag.TeacherSuccessMessage = Strings.GetLocalizedString(Strings.RegistrationSuccessTeacher); ViewBag.TeacherSuccessMessage = string.Format(ViewBag.TeacherSuccessMessage, model.FirstName); ViewBag.StudentSuccessMessage = Strings.GetLocalizedString(Strings.RegistrationSuccessStudent); ViewBag.StudentSuccessMessage = string.Format(ViewBag.StudentSuccessMessage, model.FirstName); } catch (ParseException ex) { if (ex.Code == ParseException.ErrorCode.UsernameTaken) { ModelState.AddModelError("UserName", MyMentorResources.userExistsInTheSystem); } if (ex.Code == ParseException.ErrorCode.InvalidEmailAddress) { ModelState.AddModelError("UserName", MyMentorResources.illegalEmailAddress); } logException = ex; } catch (Exception ex) { logException = ex; mLogger.Log(LogLevel.Error, ex); ModelState.AddModelError("_FORM", MyMentorResources.registrationGeneralError); } finally { userManager.Dispose(); } if (logException != null) { await ParseLogger.Log("register new user", logException.ToString()); } } else { var isCaptchaError = ModelState["CaptchaInputText"].Errors.Count > 0; ViewBag.IsCaptchaError = isCaptchaError; } // If we got this far, something failed, redisplay form return View(model); }
private async Task<MyAccountViewModel> GetMyAccountVm(MyAccountRequest request, IMyMentorRepository repository) { var model = new MyAccountViewModel {MyAccountRequest = request}; var isAdmin = Session.GetLoggedInUserRoleName() == RoleNames.ADMINISTRATORS || !string.IsNullOrEmpty(Session.GetImpersonatingUserName()); var currentUser = Session.GetLoggedInUser(); var isFirstTimeInPage = Request.QueryString.AllKeys.All(x => x.ToLower() != "uid" && x.ToLower() != "pn"); var userManager = new MyMentorUserManager(repository, Session, HttpContext); if (isAdmin && currentUser.Username != request.Uid && !isFirstTimeInPage) { if (!string.IsNullOrEmpty(request.Uid)) { var user = await repository.FindUserByUserName(request.Uid); if (user != null) { model.ErrorMessage = string.Empty; model.UserName = user.UserName; model.UserDispalyName =string.Concat(user.GetLocalizedField("FirstName") ," ", user.GetLocalizedField("LastName")); model.MyAccountRequest.Uid = user.ObjectId; if (Session.GetImpersonatingUserName() != model.UserName) await userManager.ImpersonateUser(user.UserName); else userManager.StopImpersonation(); } else { model.ErrorMessage = MyMentorResources.userNameDoesNotExist; } } else { userManager.StopImpersonation(); } } else { model.UserName = currentUser.Username; model.UserDispalyName = currentUser.GetFullName(Language.CurrentLanguageCode); model.MyAccountRequest.Uid = currentUser.ObjectId; } return model; }