Exemple #1
0
        public HttpResponseMessage GetUserInfo()
        {
            CoffeeServicesEntities db = new CoffeeServicesEntities();
            string id     = User.Identity.GetUserId();
            var    hrm    = new HttpResponseMessage();
            var    userDB = db.Users.FirstOrDefault(x => x.ID == id);
            Dictionary <string, object> user = new Dictionary <string, object>();

            user.Add("ID", userDB.ID);
            user.Add("Account", userDB.Account);
            user.Add("DisplayName", userDB.DisplayName);
            user.Add("Rep", userDB.Rep);
            user.Add("Coin", userDB.Coin);
            user.Add("Avatar", userDB.Avatar);
            hrm.Content = new StringContent(JsonConvert.SerializeObject(user));
            hrm.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");

            return(hrm);
        }
        public List <Ship> Get()
        {
            CoffeeServicesEntities db = new CoffeeServicesEntities();
            var listOfShips           = new List <Ship>();

            foreach (var ship in db.Ships)
            {
                listOfShips.Add(new Ship
                {
                    ID           = ship.ID,
                    Price        = ship.Price,
                    Description  = ship.Description,
                    Max          = ship.Max,
                    Min          = ship.Min,
                    OfferPercent = ship.OfferPercent
                });
            }
            return(listOfShips);
        }
Exemple #3
0
        public async Task <ActionResult> ExternalLoginCallback(string returnUrl)
        {
            var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();

            if (loginInfo == null)
            {
                return(RedirectToAction("Login"));
            }
            CoffeeServicesEntities db = new CoffeeServicesEntities();
            // Sign in the user with this external login provider if the user already has a login
            var user = await UserManager.FindAsync(loginInfo.Login);

            if (user != null)
            {
                var exist = db.Admins.FirstOrDefault(m => m.Name == user.UserName);
                if (exist != null)
                {
                    var currentUser = UserManager.FindByName(user.UserName);
                    var roleresult  = UserManager.AddToRole(currentUser.Id, "Admin");
                }
                await SignInAsync(user, isPersistent : false);

                return(RedirectToLocal(returnUrl));
            }
            else
            {
                // If the user does not have an account, then prompt the user to create an account
                //return RedirectToAction("Index", "Home");
                if (User.Identity.IsAuthenticated)
                {
                    return(RedirectToAction("Index", "Home"));
                }

                if (ModelState.IsValid)
                {
                    // Get the information about the user from the external login provider
                    var info = await AuthenticationManager.GetExternalLoginInfoAsync();

                    string id = info.ExternalIdentity.GetUserId();

                    var userz = new ApplicationUser()
                    {
                        UserName = info.ExternalIdentity.GetUserId(), Email = info.Email
                    };
                    //var exist = db.Admins.FirstOrDefault(m => m.Name == id);
                    //if (exist != null)
                    //{
                    //    var currentUser = UserManager.FindByName(user.UserName);
                    //    var roleresult = UserManager.AddToRole(userz.Id, "Admin");

                    //}

                    var result = await UserManager.CreateAsync(userz);

                    if (result.Succeeded)
                    {
                        result = await UserManager.AddLoginAsync(userz.Id, info.Login);

                        if (result.Succeeded)
                        {
                            await SignInAsync(userz, isPersistent : false);

                            return(RedirectToLocal(returnUrl));
                        }
                    }
                }
                return(View("Login"));
            }
        }
Exemple #4
0
        public async Task <IHttpActionResult> GetExternalLogin(string provider, string error = null)
        {
            if (error != null)
            {
                return(Redirect(Url.Content("~/") + "#error=" + Uri.EscapeDataString(error)));
            }

            if (!User.Identity.IsAuthenticated)
            {
                return(new ChallengeResult(provider, this));
            }

            ExternalLoginData externalLogin = ExternalLoginData.FromIdentity(User.Identity as ClaimsIdentity);

            if (externalLogin == null)
            {
                return(InternalServerError());
            }

            if (externalLogin.LoginProvider != provider)
            {
                Authentication.SignOut(DefaultAuthenticationTypes.ExternalCookie);
                return(new ChallengeResult(provider, this));
            }

            ApplicationUser user = await UserManager.FindAsync(new UserLoginInfo(externalLogin.LoginProvider,
                                                                                 externalLogin.ProviderKey));

            bool hasRegistered = user != null;

            if (hasRegistered)
            {
                Authentication.SignOut(DefaultAuthenticationTypes.ExternalCookie);
                ClaimsIdentity oAuthIdentity = await user.GenerateUserIdentityAsync(UserManager,
                                                                                    OAuthDefaults.AuthenticationType);

                ClaimsIdentity cookieIdentity = await user.GenerateUserIdentityAsync(UserManager,
                                                                                     CookieAuthenticationDefaults.AuthenticationType);

                UserManager.Delete(user);
                AuthenticationProperties properties = ApplicationOAuthProvider.CreateProperties(user.UserName);
                Authentication.SignIn(properties, oAuthIdentity, cookieIdentity);
                AuthenticationTicket ticket = new AuthenticationTicket(oAuthIdentity, new AuthenticationProperties());

                DateTime currentUtc = DateTime.UtcNow;
                ticket.Properties.IssuedUtc  = currentUtc;
                ticket.Properties.ExpiresUtc = currentUtc.Add(TimeSpan.FromDays(365));

                string accessToken = Startup.OAuthOptions.AccessTokenFormat.Protect(ticket);
                Request.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", accessToken);
                return(Redirect(new Uri("http://localhost:18179/Home/Signin?access_token=" + accessToken + "&expires=" + currentUtc.Add(TimeSpan.FromDays(365)).ToString("ddd, dd MMM yyyy HH:mm:ss 'GMT'"))));
            }
            else
            {
                IEnumerable <Claim> claims   = externalLogin.GetClaims();
                ClaimsIdentity      identity = new ClaimsIdentity(claims, OAuthDefaults.AuthenticationType);
                //var claimsforUser = await UserManager.GetClaimsAsync(identity.GetUserId());
                CoffeeServicesEntities db = new CoffeeServicesEntities();
                string userID             = identity.GetUserId();
                var    userDB             = db.Users.FirstOrDefault(x => x.ID == userID);
                if (userDB == null)
                {
                    string email  = identity.FindFirstValue(ClaimTypes.Email);
                    string avatar = "http://graph.facebook.com/" + identity.GetUserId() + "/picture";
                    db.Users.Add(new User {
                        ID = identity.GetUserId(), Account = email, Avatar = avatar, DisplayName = identity.GetUserName(), Coin = 5000, Rep = 0, Role = "USER"
                    });
                    db.SaveChanges();
                }

                Authentication.SignIn(identity);
                AuthenticationTicket ticket = new AuthenticationTicket(identity, new AuthenticationProperties());

                DateTime currentUtc = DateTime.UtcNow;
                ticket.Properties.IssuedUtc  = currentUtc;
                ticket.Properties.ExpiresUtc = currentUtc.Add(TimeSpan.FromDays(365));

                string accessToken = Startup.OAuthOptions.AccessTokenFormat.Protect(ticket);
                Request.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", accessToken);
                return(Redirect(new Uri("http://localhost:18179/Home/Signin?access_token=" + accessToken + "&expires=" + currentUtc.Add(TimeSpan.FromDays(365)).ToString("ddd, dd MMM yyyy HH:mm:ss 'GMT'"))));
            }
            return(null);

            // Create the response building a JSON object that mimics exactly the one issued by the default /Token endpoint
            //JObject token = new JObject(
            //    new JProperty("userName", user.UserName),
            //    new JProperty("userId", user.Id),
            //    new JProperty("access_token", accessToken),
            //    new JProperty("token_type", "bearer"),
            //    new JProperty("expires_in", TimeSpan.FromDays(365).TotalSeconds.ToString()),
            //    new JProperty("issued", currentUtc.ToString("ddd, dd MMM yyyy HH':'mm':'ss 'GMT'")),
            //    new JProperty("expires", currentUtc.Add(TimeSpan.FromDays(365)).ToString("ddd, dd MMM yyyy HH:mm:ss 'GMT'"))
            //);
        }
Exemple #5
0
        public List <Ship> getShips()
        {
            CoffeeServicesEntities db = new CoffeeServicesEntities();

            return(db.Ships.ToList());
        }