private void OutputProfileSignInResult(IOutputProvider outputProvider, HttpContext context, APIRequestParams filter) { var sr = new System.IO.StreamReader(context.Request.InputStream); string jsonContent = sr.ReadToEnd(); var loginModel = JsonConvert.DeserializeObject <LoginModel>(jsonContent); User user = new OCM.API.Common.UserManager().GetUser(loginModel); string access_token = null; var responseEnvelope = new APIResponseEnvelope(); if (user == null) { context.Response.StatusCode = 401; context.Response.Flush(); return; } else { access_token = Security.JWTAuth.GenerateEncodedJWT(user); /* * var validatedToken = Security.JWTAuthTicket.ValidateJWTForUser(testTicket, user); */ } responseEnvelope.Data = new { UserProfile = user, access_token = access_token }; outputProvider.GetOutput(context.Response.OutputStream, responseEnvelope, filter); }
public ActionResult Comments() { UserManager userManager = new UserManager(); var user = userManager.GetUser(int.Parse(Session["UserID"].ToString())); var list = new UserCommentManager().GetUserComments(user.ID); return View(list); }
public ActionResult CommentDelete(int id) { var user = new UserManager().GetUser(int.Parse(Session["UserID"].ToString())); var commentManager = new UserCommentManager(); var list = commentManager.GetUserComments(user.ID); //delete comment if owned by this user if (list.Where(c => c.User.ID == user.ID && c.ID == id).Any()) { commentManager.DeleteComment(user.ID, id); } return RedirectToAction("Comments"); }
public ActionResult EditUser(OCM.API.Common.Model.User userDetails) { if (ModelState.IsValid) { var userManager = new UserManager(); //save if (userManager.UpdateUserProfile(userDetails, true)) { return RedirectToAction("Users"); } } return View(userDetails); }
public ActionResult AddMediaItem(int id, FormCollection collection) { var user = new UserManager().GetUser((int)Session["UserID"]); var htmlInputProvider = new OCM.API.InputProviders.HTMLFormInputProvider(); if (user != null) { var mediaItem = new MediaItem(); bool uploaded = htmlInputProvider.ProcessMediaItemSubmission(this.HttpContext.ApplicationInstance.Context, ref mediaItem, user.ID); ViewBag.PoiId = id; ViewBag.UploadCompleted = true; return View(); } return View(); }
public ActionResult ChangePassword() { bool requireCurrentPassword = true; var userManager = new UserManager(); //allow user to set a new password without confirming old one if they haven't set a password yet if (!userManager.HasPassword(int.Parse(Session["UserID"].ToString()))) { requireCurrentPassword = false; } if (TempData["IsCurrentPasswordRequired"] != null && (bool)TempData["IsCurrentPasswordRequired"] == false) { requireCurrentPassword = false; } return View(new PasswordChangeModel { IsCurrentPasswordRequired = requireCurrentPassword }); }
protected void Session_OnStart() { //if user has existing OCM session token, sign in automatically var sessionToken = GetCookie(new HttpRequestWrapper(Request), "OCMSessionToken"); var identifier = GetCookie(new HttpRequestWrapper(Request), "Identifier"); if (!String.IsNullOrEmpty(sessionToken) && !String.IsNullOrEmpty(identifier)) { //got token, if valid sign in users var userManager = new OCM.API.Common.UserManager(); var user = userManager.GetUserFromIdentifier(identifier, sessionToken); if (user != null) { OCM.MVC.Controllers.LoginProviderController.PerformCoreLogin(user); } } }
public ActionResult ChangePassword(API.Common.Model.PasswordChangeModel model) { if (ModelState.IsValid) { var passwordChanged = new UserManager().SetNewPassword(int.Parse(Session["UserID"].ToString()), model); model.PasswordResetFailed = !passwordChanged; if (passwordChanged) { model.PasswordResetCompleted = true; return RedirectToAction("Index", "Profile"); } } return View(model); }
public void DeleteMediaItem(int userId, int mediaItemId) { var dataModel = new OCMEntities(); var item = dataModel.MediaItems.FirstOrDefault(c => c.ID == mediaItemId); if (item != null) { var cpID = item.ChargePointID; dataModel.MediaItems.Remove(item); dataModel.ChargePoints.Find(cpID).DateLastStatusUpdate = DateTime.UtcNow; dataModel.SaveChanges(); //TODO: delete from underlying storage var user = new UserManager().GetUser(userId); AuditLogManager.Log(user, AuditEventType.DeletedItem, "{EntityType:\"Comment\", EntityID:" + mediaItemId + ",ChargePointID:" + cpID + "}", "User deleted media item"); } }
public void DeleteComment(int userId, int commentId) { var comment = DataModel.UserComments.FirstOrDefault(c=>c.ID==commentId); if (comment!=null){ var cpID = comment.ChargePointID; DataModel.UserComments.Remove(comment); DataModel.ChargePoints.Find(cpID).DateLastStatusUpdate = DateTime.UtcNow; DataModel.SaveChanges(); var user = new UserManager().GetUser(userId); AuditLogManager.Log(user, AuditEventType.DeletedItem, "{EntityType:\"Comment\",EntityID:" + commentId + ",ChargePointID:" + cpID + "}", "User deleted comment"); //refresh cached POI data CacheManager.RefreshCachedPOI(cpID); } }
public ActionResult Authenticate(LoginModel login) { User user = new OCM.API.Common.UserManager().GetUser(login); string access_token = null; var responseEnvelope = new APIResponseEnvelope(); if (user == null) { return(Unauthorized()); } else { access_token = Security.JWTAuth.GenerateEncodedJWT(user); } responseEnvelope.Data = new { UserProfile = user, access_token = access_token }; return(Ok(responseEnvelope)); }
private async Task OutputProfileRegisterResult(IOutputProvider outputProvider, HttpContext context, APIRequestParams filter) { var sr = new System.IO.StreamReader(context.Request.Body); string jsonContent = sr.ReadToEnd(); var registration = JsonConvert.DeserializeObject <RegistrationModel>(jsonContent); User user = null; if (!string.IsNullOrEmpty(registration.EmailAddress) && registration.EmailAddress.Trim().Length > 5 && registration.EmailAddress.Contains("@")) { if (!string.IsNullOrWhiteSpace(registration.Password) && registration.Password.Trim().Length > 4) { user = new OCM.API.Common.UserManager().RegisterNewUser(registration); } } else { context.Response.StatusCode = 401; } string access_token = null; var responseEnvelope = new APIResponseEnvelope(); if (user != null) { context.Response.StatusCode = 401; return; } else { access_token = Security.JWTAuth.GenerateEncodedJWT(user); } responseEnvelope.Data = new { UserProfile = user, access_token = access_token }; await outputProvider.GetOutput(context, context.Response.Body, responseEnvelope, filter); }
public ActionResult Edit(ChargePoint poi) { var refData = new POIBrowseModel(); refData.AllowOptionalCountrySelection = false; ViewBag.ReferenceData = refData; ViewBag.ConnectionIndex = 0; //connection counter shared by equipment details ViewBag.EnableEditView = true; if (Request["editoption"] == "addconnection") { //add a placeholder for new equipment details if (poi.Connections == null) poi.Connections = new List<ConnectionInfo>(); //TODO: setup defaults poi.Connections.Add(new ConnectionInfo()); return View(poi); } if (Request["editoption"].ToString().StartsWith("remove-equipment")) { //TODO:remove requested connection //poi.Connections.Remove(); string[] equipmentElementIDs = Request["editoption"].ToString().Split('-'); int itemIndex = int.Parse(equipmentElementIDs[2]); poi.Connections.RemoveAt(itemIndex); return View(poi); } if (Request["editoption"] == "preview") { //preview poi ViewBag.EnablePreviewMode = true; //reset any values provided as -1 to a standard default (unknown etc) PrepareDefaultsForBlankSelections(poi); //update preview of poi with fully populated reference data poi = new POIManager().PreviewPopulatedPOIFromModel(poi); InitEditReferenceData(poi); return View(poi); } if (ModelState.IsValid) { try { User user = null; if (IsUserSignedIn) user = new UserManager().GetUser((int)Session["UserID"]); //reset any values provided as -1 to a standard default (unknown etc) PrepareDefaultsForBlankSelections(poi); if (poi.AddressInfo.Country == null || poi.AddressInfo.Country.ID == -1) ModelState.AddModelError("Country", "Required"); //perform actual POI submission, then redirect to POI details if we can int poiSubmissionID = new SubmissionManager().PerformPOISubmission(poi, user); if (poiSubmissionID > -1) { if (poiSubmissionID > 0) { return RedirectToAction("Details", "POI", new { id = poiSubmissionID, status = "editsubmitted" }); } else { return RedirectToAction("Index"); } } else { ViewBag.ValidationFailed = true; } } catch { //return View(poi); } } else { foreach (ModelState modelState in ViewData.ModelState.Values) { foreach (ModelError error in modelState.Errors) { System.Diagnostics.Debug.WriteLine(error.ToString()); } } } ViewBag.ReferenceData = new POIBrowseModel(); return View(poi); }
// // GET: /POI/Edit/5 public ActionResult Edit(int? id, bool createCopy = false) { if (id > 0) { ChargePoint poi = null; if (createCopy) { //get version of POI with location details removed, copying equipment etc poi = new POIManager().GetCopy((int)id, true); } else { poi = new POIManager().Get((int)id); } if (poi != null) { InitEditReferenceData(poi); var refData = new POIBrowseModel(); ViewBag.ReferenceData = refData; ViewBag.HideAdvancedInfo = true; if (!createCopy) { try { var user = new UserManager().GetUser((int)Session["UserID"]); if (POIManager.CanUserEditPOI(poi, user)) { ViewBag.HideAdvancedInfo = false; } } catch (Exception) { ; ; //user not signed in } } //enable advanced edit options for full editors/admin return View(poi); } } //no applicable poi, jump back to browse return RedirectToAction("Index", "POI"); }
public ActionResult Subscriptions() { UserManager userManager = new UserManager(); var user = userManager.GetUser(int.Parse(Session["UserID"].ToString())); ViewBag.UserProfile = user; ViewBag.ReferenceData = new ReferenceDataManager().GetCoreReferenceData(); var list = new UserSubscriptionManager().GetUserSubscriptions(user.ID); return View(list); }
public async Task<ActionResult> Import(string providerName, bool fetchLiveData, bool performImport = false) { var stopwatch = new Stopwatch(); stopwatch.Start(); var importManager = new Import.ImportManager(Server.MapPath("~/Temp")); var providers = importManager.GetImportProviders(new ReferenceDataManager().GetDataProviders()); var provider = providers.FirstOrDefault(p => p.GetProviderName() == providerName); var coreReferenceData = new ReferenceDataManager().GetCoreReferenceData(); ((BaseImportProvider)provider).InputPath = importManager.TempFolder + "//cache_" + provider.GetProviderName() + ".dat"; var result = await importManager.PerformImport(OCM.Import.Providers.ExportType.POIModelList, fetchLiveData, new OCM.API.Client.APICredentials(), coreReferenceData, "", provider, true); var systemUser = new UserManager().GetUser((int)StandardUsers.System); if (performImport) { //add/update/delist POIs await Task.Run(() => { importManager.UpdateImportedPOIList(result, systemUser); }); } stopwatch.Stop(); result.Log += "\r\nImport processing time (seconds): " + stopwatch.Elapsed.TotalSeconds; return View(result); }
public ActionResult MediaDelete(int id) { var itemManager = new MediaItemManager(); var user = new UserManager().GetUser(int.Parse(Session["UserID"].ToString())); itemManager.DeleteMediaItem(user.ID, id); return RedirectToAction("Details", "POI"); }
public ActionResult Edit(User updateProfile) { if (ModelState.IsValid) { try { if (Session["UserID"] != null) { // TODO: Add update logic here var userManager = new UserManager(); var user = userManager.GetUser((int)Session["UserID"]); bool updatedOK = false; if (user.ID == updateProfile.ID) { updatedOK = userManager.UpdateUserProfile(updateProfile, false); } if (updatedOK) { return RedirectToAction("Index"); } else { TempData["UpdateFailed"] = true; } } return View(); } catch { return View(); } } return View(updateProfile); }
public ActionResult Edit() { if (Session["UserID"] != null) { UserManager userManager = new UserManager(); var user = userManager.GetUser(int.Parse(Session["UserID"].ToString())); return View(user); } else return View(); }
public ActionResult Media() { UserManager userManager = new UserManager(); var user = userManager.GetUser(int.Parse(Session["UserID"].ToString())); var list = new MediaItemManager().GetUserMediaItems(user.ID); return View(list); }
public ActionResult MediaDelete(int id) { var user = new UserManager().GetUser(int.Parse(Session["UserID"].ToString())); var itemManager = new MediaItemManager(); var list = itemManager.GetUserMediaItems(user.ID); //delete item if owned by this user if (list.Where(c => c.User.ID == user.ID && c.ID == id).Any()) { itemManager.DeleteMediaItem(user.ID, id); } return RedirectToAction("Media"); }
public ActionResult View(int id) { UserManager userManager = new UserManager(); var user = userManager.GetUser(id); ViewBag.CountryList = new SelectList(new ReferenceDataManager().GetCountries(true), "ID", "Title"); return View(user); }
public ActionResult Comment(POIViewModel model) { var comment = model.NewComment; if (ModelState.IsValid) { try { var user = new UserManager().GetUser((int)Session["UserID"]); if (comment.Rating == 0) comment.Rating = null; if (new SubmissionManager().PerformSubmission(comment, user) > 0) { if (comment.ChargePointID > 0) { return RedirectToAction("Details", "POI", new { id = comment.ChargePointID }); } else { return RedirectToAction("Index"); } } } catch { //return View(poi); } } else { foreach (ModelState modelState in ViewData.ModelState.Values) { foreach (ModelError error in modelState.Errors) { System.Diagnostics.Debug.WriteLine(error.ToString()); } } return View("AddComment", model); } return RedirectToAction("Index"); }
public ActionResult ConfirmPasswordReset(string token, string email) { //check token is valid for email, then sign in user and go to password change var userManager = new UserManager(); var user = userManager.GetUserFromResetToken(email, token); if (user != null) { userManager.AssignNewSessionToken(user.ID, true); //sign in user PerformCoreLogin(user); //proceed to password change TempData["IsCurrentPasswordRequired"] = false; return RedirectToAction("ChangePassword", "Profile"); } return View(); }
public ActionResult CommentDelete(int id) { var commentManager = new UserCommentManager(); var user = new UserManager().GetUser(int.Parse(Session["UserID"].ToString())); commentManager.DeleteComment(user.ID, id); return RedirectToAction("Index"); }
public ActionResult PasswordReset(OCM.API.Common.Model.PasswordResetRequestModel model) { if (ModelState.IsValid) { //send confirmation email bool resetInitiated = new UserManager().BeginPasswordReset(model.EmailAddress); if (resetInitiated) { model.ResetInitiated = true; } else { model.ResetInitiated = false; model.IsUnknownAccount = true; } } return View(model); }
public ActionResult Users() { var userList = new UserManager().GetUsers().OrderByDescending(u => u.DateCreated); return View(userList); }
public ActionResult Register(OCM.API.Common.Model.RegistrationModel model) { if (ModelState.IsValid) { //register as new user, check email is valid first var userManager = new UserManager(); var user = userManager.RegisterNewUser(model); if (user != null) { return RedirectToAction("BeginLogin", "LoginProvider"); } else { model.RegistrationFailed = true; } } return View(model); }
public ActionResult EditUser(int id) { var user = new UserManager().GetUser(id); return View(user); }
public ActionResult SignOut() { if (Session["UserID"] != null) { // assign fresh session token for next login var userManager = new UserManager(); userManager.AssignNewSessionToken((int)Session["UserID"]); } //clear cookies & set new session token UpdateCookie(Response, "IdentityProvider", ""); UpdateCookie(Response, "Identifier", ""); UpdateCookie(Response, "Username", ""); UpdateCookie(Response, "OCMSessionToken", ""); UpdateCookie(Response, "AccessPermissions", ""); //clear session Session.Abandon(); return RedirectToAction("Index", "Home"); }
public ActionResult BeginLogin(OCM.API.Common.Model.LoginModel loginModel) { if (ModelState.IsValid) { var userManager = new UserManager(); try { var user = userManager.GetUser(loginModel); if (user != null) { return ProcessLoginResult(user.Identifier, user.IdentityProvider, user.Username, user.EmailAddress); } else { ViewBag.InvalidLogin = true; } } catch (UserManager.PasswordNotSetException) { return RedirectToAction("PasswordReset", new { emailAddress = loginModel.EmailAddress }); } } ViewBag.LoginProviders = OAuthWebSecurity.RegisteredClientData; return View(loginModel); }
public void ProcessEditQueueItem(int id, bool publishEdit, int userId) { //prepare poi details int updatePOIId = 0; var queueItem = DataModel.EditQueueItems.FirstOrDefault(e => e.ID == id); if (queueItem != null && queueItem.IsProcessed == false) { if (queueItem.EntityType.ID == (int)StandardEntityTypes.POI) { //check current user is authorized to approve edits for this POIs country bool hasEditPermission = false; var editPOI = DeserializePOIFromJSON(queueItem.EditData); var userProfile = new UserManager().GetUser(userId); if (userProfile != null) { if (UserManager.HasUserPermission(userProfile, editPOI.AddressInfo.CountryID, PermissionLevel.Editor)) { hasEditPermission = true; } } //processing a POI add/edit if (hasEditPermission) { if (publishEdit) { //get diff between previous and edit POIManager poiManager = new POIManager(); Model.ChargePoint poiA = DeserializePOIFromJSON(queueItem.PreviousData); Model.ChargePoint poiB = DeserializePOIFromJSON(queueItem.EditData); bool poiUpdateRequired = false; if (poiA != null) { //this is an edit, load the latest version of the POI as version 'A' poiA = poiManager.Get(poiA.ID); if (poiManager.HasDifferences(poiA, poiB)) { poiUpdateRequired = true; } } //save poi update //if its an edit, load the original details before applying the change if (poiUpdateRequired) { //updates to externally provided POIs require old version to be superseded (archived) first if (poiA != null && poiA.DataProviderID != (int)StandardDataProviders.OpenChargeMapContrib) { poiManager.SupersedePOI(DataModel, poiA, poiB); } } //set/update cp properties from simple model to data model var poiData = poiManager.PopulateChargePoint_SimpleToData(poiB, DataModel); //set status type to published if previously unset if (poiData.SubmissionStatusTypeID == null) { poiData.SubmissionStatusType = DataModel.SubmissionStatusTypes.First(s => s.ID == (int)StandardSubmissionStatusTypes.Submitted_Published); } poiData.DateLastStatusUpdate = DateTime.UtcNow; //publish edit DataModel.SaveChanges(); updatePOIId = poiData.ID; //attribute submitter with reputation points if (queueItem.UserID != null) { new UserManager().AddReputationPoints((int)queueItem.UserID, 1); } } //update edit queue item as processed queueItem.IsProcessed = true; queueItem.ProcessedByUser = DataModel.Users.FirstOrDefault(u => u.ID == userId); queueItem.DateProcessed = DateTime.UtcNow; DataModel.SaveChanges(); //TODO: also award processing editor with reputation points if they are approving someone elses edit and they are not Admin //Refresh POI cache Task cacheRefresh = CacheManager.RefreshCachedPOI(updatePOIId); } } } }