public object Me() { MinifiedUser oUser = (MinifiedUser)UserHelper.GetCurrentUser(true); if (oUser != null) { if (oUser.persistent) { //need to postpone the cookie for each request. it is because user has checked 'remember me' when logged... int iRemember = 90; System.Web.HttpCookie newCookie = new System.Web.HttpCookie("UserData"); newCookie.Name = "UserData"; newCookie.Path = "/"; newCookie.Value = Newtonsoft.Json.JsonConvert.SerializeObject(oUser); newCookie.Expires = DateTime.Now.AddDays(iRemember); //newCookie.Domain = "192.118.60.111"; System.Web.HttpContext.Current.Response.Cookies.Add(newCookie); } return(oUser); } else { //if user did not match, or was not present on cookie, return 401 var resp = new HttpResponseMessage(); resp.StatusCode = HttpStatusCode.Unauthorized; string msg = "{\"Message\":\"Authorization has been denied for this request.\"}"; resp.Content = new StringContent(msg, System.Text.Encoding.UTF8, "application/json"); return(resp); } }
public object Login(LoginData loginData) { //implement: check login Login oLogin = new Login(loginData); if (oLogin.CheckLogin()) { //user is logged FormsAuthentication.SetAuthCookie(loginData.userName, loginData.rememberMe); //return the user profile from login object; MinifiedUser oUser = oLogin.User; oLogin = null; int iRemember = loginData.rememberMe ? 90 : 1; System.Web.HttpCookie newCookie = new System.Web.HttpCookie("UserData"); newCookie.Name = "UserData"; newCookie.Path = "/"; newCookie.Value = Newtonsoft.Json.JsonConvert.SerializeObject(oUser); newCookie.Expires = DateTime.Now.AddDays(iRemember); System.Web.HttpContext.Current.Response.Cookies.Add(newCookie); return(oUser); } else { //no such user exists var resp = new HttpResponseMessage(); resp.StatusCode = HttpStatusCode.Unauthorized; //add login message to the response string msg = "{ \"error\":\"" + Models.Login.FriendlyLoginMessage(oLogin.LoginStatusCode); if (oLogin.LoginStatusCode == Models.Login.LoginStatus.GeneralError) { msg += ": " + oLogin.LoginMessage; } msg += "\" }"; resp.Content = new StringContent(msg, System.Text.Encoding.UTF8, "application/json"); return(resp); } }
/// <summary> /// Creates a users with minified data from an existing json token /// </summary> public IMinifiedUser MapJsonToMinifiedUser(JToken jUser) { if (!jUser.HasValues) { return(null); } IMinifiedUser u = new MinifiedUser() { Id = long.Parse(jUser["id"].ToString()), Username = jUser["username"].ToString(), ProfileImageUrl = jUser["profile_picture"].ToString(), FullName = jUser.Children <JProperty>().Any(x => x.Name == "full_name") ? jUser["full_name"].ToString() : null, }; if (u.FullName == null) { u.FullName = jUser.Children <JProperty>().Any(x => x.Name == "first_name") ? jUser["first_name"].ToString() : null; u.FullName += jUser.Children <JProperty>().Any(x => x.Name == "last_name") ? " " + jUser["last_name"].ToString() : null; } return(u); }