예제 #1
0
        public async Task <ActionResult <Artist> > PostArtist(Artist artist)
        {
            if (!Authentication.AuthenticateAsync(Request).Result)
            {
                return(Unauthorized());
            }

            var payload = await GoogleServices.GetTokenPayloadAsync(Request.Headers["Authorization"].First());

            UserID existingUser = _context.UserIDs.SingleOrDefault(u => u.GoogleIdToken == payload.Subject);

            if (existingUser != null)
            {
                artist.UserId = existingUser;
            }
            else
            {
                artist.UserId = new UserID()
                {
                    GoogleIdToken = payload.Subject
                }
            };

            _context.Artists.Add(artist);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetArtist", new { id = artist.Id }, artist));
        }
예제 #2
0
        public async Task <ActionResult> OAuth2Callback(string provider, string returnUrl, string error = null)
        {
            if (error != null)
            {
                return(Redirect(Url.Content("~/account/signin") + (!String.IsNullOrWhiteSpace(error) ? "?error=" + Uri.EscapeDataString(error) : "")));
            }

            var result = await Authentication.AuthenticateAsync(DefaultAuthenticationTypes.ExternalCookie);

            if (!result.Identity.IsAuthenticated || !IsAuthorized(result.Identity))
            {
                return(Redirect(Url.Content("~/account/signin") + (!String.IsNullOrWhiteSpace(error) ? "?error=" + Uri.EscapeDataString(error) : "")));
            }

            Authentication.SignOut(DefaultAuthenticationTypes.ExternalCookie);

            var claims = result.Identity.Claims.ToList();

            claims.Add(new Claim(ClaimTypes.AuthenticationMethod, provider));

            var ci = new ClaimsIdentity(claims, DefaultAuthenticationTypes.ApplicationCookie);

            Authentication.SignIn(ci);

            return(RedirectToLocal(returnUrl));
        }
        private async Task <ExternalLoginInfo> AuthenticationManager_GetExternalLoginInfoAsync_WithExternalBearer()
        {
            ExternalLoginInfo loginInfo = null;



            var result = await Authentication.AuthenticateAsync(DefaultAuthenticationTypes.ExternalBearer);

            if (result != null && result.Identity != null)
            {
                var idClaim = result.Identity.FindFirst(ClaimTypes.NameIdentifier);
                //     var accessToken = loginInfo.ExternalIdentity.Claims.Where(c => c.Type.Equals("urn:google:accesstoken")).Select(c => c.Value).FirstOrDefault();
                //Uri apiRequestUri = new Uri("https://www.googleapis.com/oauth2/v2/userinfo?access_token=" + accessToken);
                ////request profile image
                //using (var webClient = new System.Net.WebClient())
                //{
                //    var json = webClient.DownloadString(apiRequestUri);
                //    dynamic result = JsonConvert.DeserializeObject(json);
                //    userPicture = result.picture;
                //}


                if (idClaim != null)
                {
                    loginInfo = new ExternalLoginInfo()
                    {
                        DefaultUserName = result.Identity.Name == null ? "" : result.Identity.Name.Replace(" ", ""),
                        Email           = result.Identity.Name == null ? "" : result.Identity.Name.Replace(" ", ""),
                        Login           = new UserLoginInfo(idClaim.Issuer, idClaim.Value)
                    };
                }
            }
            return(loginInfo);
        }
        public async Task <IActionResult> Login(string userID, string password)
        {
            Customer loggedInCustomer = await Authentication.AuthenticateAsync(_context, userID, password);

            var login = await _context.Logins.FirstOrDefaultAsync(x => x.UserID == userID);

            if (login?.Status == LoginStatus.Locked)
            {
                ModelState.AddModelError("LoginFailed", "This account has been locked for 1 minute");
                return(View(nameof(Index), new Login {
                    UserID = userID
                }));
            }

            if (loggedInCustomer == null)
            {
                ModelState.AddModelError("LoginFailed", "Login failed, please try again.");
                return(View(nameof(Index), new Login {
                    UserID = userID
                }));
            }

            // Set session for loggedIn customer.
            HttpContext.Session.SetInt32(nameof(Customer.CustomerID), loggedInCustomer.CustomerID);
            HttpContext.Session.SetString(nameof(Customer.Name), loggedInCustomer.Name);

            return(RedirectToAction("Index", "ATM"));
        }
예제 #5
0
        public async Task <ActionResult <IEnumerable <SocialMedia> > > GetSocialMedias()
        {
            DBInitializer.Run();

            if (!Authentication.AuthenticateAsync(Request).Result)
            {
                return(Unauthorized());
            }

            return(await _context.SocialMedias.ToListAsync());
        }
예제 #6
0
        public async Task <ActionResult <SocialMedia> > GetSocialMedia(int id)
        {
            if (!Authentication.AuthenticateAsync(Request).Result)
            {
                return(Unauthorized());
            }

            var socialMedia = await _context.SocialMedias.FindAsync(id);

            if (socialMedia == null)
            {
                return(NotFound());
            }

            return(socialMedia);
        }
예제 #7
0
        public async Task <ActionResult <Artist> > GetArtist(int id)
        {
            if (!Authentication.AuthenticateAsync(Request).Result)
            {
                return(Unauthorized());
            }

            var artist = await _context.Artists.Include(a => a.ArtistSocialMedias).Include(h => h.ArtistGenres).SingleOrDefaultAsync(a => a.Id == id);

            if (artist == null)
            {
                return(NotFound());
            }

            return(artist);
        }
        public async Task <ActionResult <Review> > GetReview(int id)
        {
            if (!Authentication.AuthenticateAsync(Request).Result)
            {
                return(Unauthorized());
            }

            var review = await _context.Reviews.FindAsync(id);

            if (review == null)
            {
                return(NotFound());
            }

            return(review);
        }
        public async Task <ActionResult <Genre> > GetGenre(int id)
        {
            if (!Authentication.AuthenticateAsync(Request).Result)
            {
                return(Unauthorized());
            }

            var genre = await _context.Genres.FindAsync(id);

            if (genre == null)
            {
                return(NotFound());
            }

            return(genre);
        }
        public async Task <ActionResult <Participation> > GetParticipation(int id)
        {
            if (!Authentication.AuthenticateAsync(Request).Result)
            {
                return(Unauthorized());
            }

            var participation = await _context.Participations.FindAsync(id);

            if (participation == null)
            {
                return(NotFound());
            }

            return(participation);
        }
예제 #11
0
        public async Task <ActionResult <Event> > GetEvent(int id)
        {
            if (!Authentication.AuthenticateAsync(Request).Result)
            {
                return(Unauthorized());
            }

            var @event = await _context.Events.Include(h => h.EventGenres).SingleOrDefaultAsync(a => a.Id == id);

            if (@event == null)
            {
                return(NotFound());
            }

            return(@event);
        }
예제 #12
0
        async Task AuthenticateAsync(string scheme)
        {
            AuthResult result = null;

            try
            {
                result = await Authentication.AuthenticateAsync(
                    new Uri("myapp://"),
                    new Uri("https://myapp.com"),
                    scheme);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }

            HandleResult(result);
        }
예제 #13
0
        private async Task <ExternalLoginInfo> AuthenticationManager_GetExternalLoginInfoAsync_WithExternalBearer()
        {
            ExternalLoginInfo loginInfo = null;

            var result = await Authentication.AuthenticateAsync(DefaultAuthenticationTypes.ExternalBearer);

            if (result != null && result.Identity != null)
            {
                var idClaim = result.Identity.FindFirst(ClaimTypes.NameIdentifier);
                if (idClaim != null)
                {
                    loginInfo = new ExternalLoginInfo()
                    {
                        DefaultUserName = result.Identity.Name == null ? "" : result.Identity.Name.Replace(" ", ""),
                        Login           = new UserLoginInfo(idClaim.Issuer, idClaim.Value)
                    };
                }
            }
            return(loginInfo);
        }
예제 #14
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        private async Task <ExternalLoginInfo> AuthenticationManager_GetExternalLoginInfoAsync_WithExternalBearer()
        {
            ExternalLoginInfo loginInfo = null;

            var result = await Authentication.AuthenticateAsync(DefaultAuthenticationTypes.ExternalBearer);

            var     accessToken = result.Identity.FindFirstValue("FacebookAccessToken");
            var     fb          = new FacebookClient(accessToken);
            dynamic myInfo      = fb.Get("/me?fields=email,first_name,last_name,gender");

            if (result != null && result.Identity != null)
            {
                var idClaim = result.Identity.FindFirst(ClaimTypes.NameIdentifier);
                if (idClaim != null)
                {
                    loginInfo = new ExternalLoginInfo()
                    {
                        DefaultUserName = result.Identity.Name == null ? "" : result.Identity.Name.Replace(" ", ""),
                        Login           = new UserLoginInfo(idClaim.Issuer, idClaim.Value)
                    };
                }
            }
            return(loginInfo);
        }
예제 #15
0
 /// <summary>
 /// Authenticates the band.
 /// </summary>
 /// <exception cref="AccessDeniedException">Device can't be accessed due to being accessed by something else.</exception>
 public async Task AuthenticateBandAsync() => await _authentication.AuthenticateAsync();