示例#1
0
        public async Task OnCreatingTicket(OAuthCreatingTicketContext ctx)
        {
            TUserInfo userInfo = await GetUserInfoFromContext(ctx);

            await CreateOrUpdateUser(userInfo);

            RoomiesData roomie = await FindUser(userInfo);

            ctx.Principal = CreatePrincipal(roomie);
        }
示例#2
0
        ClaimsPrincipal CreatePrincipal(RoomiesData roomie)
        {
            List <Claim> claims = new List <Claim>
            {
                new Claim(ClaimTypes.NameIdentifier, roomie.RoomieId.ToString(), ClaimValueTypes.String),
                new Claim(ClaimTypes.Email, roomie.Email)
            };
            ClaimsPrincipal principal = new ClaimsPrincipal(new ClaimsIdentity(claims, CookieAuthentication.AuthenticationType, ClaimTypes.Email, string.Empty));

            return(principal);
        }
示例#3
0
        public async Task <RoomiesData> FindUser(string email, string password)
        {
            RoomiesData user = await _roomiesGateway.FindByEmail(email);

            if (user != null && _passwordHasher.VerifyHashedPassword(user.Password, password) == PasswordVerificationResult.Success)
            {
                return(user);
            }

            return(null);
        }
示例#4
0
        public async Task <Result <RoomiesData> > getRoomieIdByEmail(string email)
        {
            using (SqlConnection con = new SqlConnection(_connectionString))
            {
                RoomiesData result = await con.QueryFirstOrDefaultAsync <RoomiesData>(
                    "select r.RoomieId, r.FirstName from rm.tRoomie r where r.Email = @Email",
                    new { Email = email });

                if (result == null)
                {
                    return(Result.Failure <RoomiesData>(Status.NotFound, "Roomie not found."));
                }
                return(Result.Success(result));
            }
        }
示例#5
0
        public async Task <IActionResult> Login(LoginViewModel model)
        {
            if (ModelState.IsValid)
            {
                RoomiesData roomie = await _roomiesService.FindUser(model.Email, model.Password);

                if (roomie == null)
                {
                    ModelState.AddModelError(string.Empty, "Invalid login attempt.");
                    return(View(model));
                }
                await SignIn(roomie.Email, roomie.RoomieId.ToString());

                return(RedirectToAction(nameof(Authenticated)));
            }

            return(View(model));
        }
示例#6
0
        public async Task <Result <RoomiesData> > FindById2(int roomieId)
        {
            using (SqlConnection con = new SqlConnection(_connectionString))
            {
                RoomiesData roomie = await con.QueryFirstOrDefaultAsync <RoomiesData>(
                    @"select s.RoomieId,
                             s.FirstName,
                             s.LastName,
                             s.BirthDate,
                             s.Phone,
                             s.Email
                      from rm.tRoomie s
                      where s.RoomieId = @RoomieId;",
                    new { RoomieId = roomieId });

                if (roomie == null)
                {
                    return(Result.Failure <RoomiesData>(Status.NotFound, "Roomie not found."));
                }
                return(Result.Success(roomie));
            }
        }