public override async Task <LoginUserResult> Login(LoginUserCommand command)
        {
            var citizenId = command.AsCitizenId();
            var user      = await users.Query()
                            .Where(u => u.TCKimlikNo == citizenId)
                            .FirstOrDefaultAsync();

            if (user == null)
            {
                // Bakalim hemonline'da var mi?
                var cid         = command.ExternalUserId;
                var mobilePhone = user.CepTelefonu;
                return(new LoginUserResult {
                    Status = LoginUserResult.LoginStatus.UserNotFound, MobilePhones = new string[] { mobilePhone }
                });
            }

            // Bu provider icin external id tckimlik string halidir.
            if (command.IsPhoneValid)
            {
                // Bu provider icin external id hemonline login nameidir'sidir.
                return(await PrepareOneTimePassword(AuthenticationProviderType.Person, user.CepTelefonu, user.TCKimlikNo.ToString()));
            }
            else
            {
                return new LoginUserResult
                       {
                           Message      = "Bilgiler doğru. Cep telefonu gerekiyor.",
                           Status       = LoginUserResult.LoginStatus.PhoneNumberRequired,
                           MobilePhones = new string[] { user.CepTelefonu }
                       }
            };
        }
        public override async Task <LoginUserResult> Login(LoginUserCommand command)
        {
            var citizenId = command.AsCitizenId();
            var user      = await _users.Query()
                            .Where(u => u.CitizenId == citizenId)
                            .FirstOrDefaultAsync();


            if (command.IsPhoneValid)
            {
                return(await PrepareOneTimePassword(AuthenticationProviderType.Person, user.MobilePhones, user.CitizenId.ToString()));
            }

            return(new LoginUserResult
            {
                Message = Messages.TrueButCellPhone,

                Status = LoginUserResult.LoginStatus.PhoneNumberRequired,
                MobilePhones = new string[] { user.MobilePhones }
            });
        }
        /// <summary>
        /// Akış:
        ///
        /// - HemOnline kullanıcısı sicil ve şifresiyle logini çağırır
        /// - Sistem cep telefonu bulamamışsa Hata döner
        ///		- Sonraki çağırımda cep telefonu ile gelir ve OTP oluşturularak tele gönderilir.
        ///	- Cep telefonu bulunmuşsa OTP oluşturularak tele gönderilir.
        ///
        /// </summary>
        /// <param name="command"></param>
        /// <returns></returns>
        public override async Task <LoginUserResult> Login(LoginUserCommand command)
        {
            var provider = new FrameworkLoginProvider(context);
            var result   = provider.CheckPassword(command.ExternalUserId, command.Password);
            var user     = result.Data;

            // Eger telefon numarasi verilmisse guncelle ve devam et
            if (command.IsPhoneValid)
            {
                // Eger esitse bosuna db'yi yorma.
                if (user.UpdateMobilePhone(command.MobilePhone))
                {
                    await context.SaveChangesAsync();
                }
            }
            if (result.Success)
            {
                if (command.IsPhoneValid)
                {
                    // Bu provider icin external id hemonline login name idir.
                    return(await PrepareOneTimePassword(Entities.Concrete.AuthenticationProviderType.Staff, user.MobilePhone, user.LoginName));
                }
                else
                {
                    return new LoginUserResult
                           {
                               Message      = "Bilgiler doğru. Cep telefonu gerekiyor.",
                               Status       = LoginUserResult.LoginStatus.PhoneNumberRequired,
                               MobilePhones = new string[] { user.MobilePhone }
                           }
                };
            }
            else
            {
                return new LoginUserResult {
                           Message = result.Message, Status = LoginUserResult.LoginStatus.WrongCredentials
                }
            };
        }
Ejemplo n.º 4
0
 public Task <LoginUserResult> Login(LoginUserCommand command)
 {
     throw new NotImplementedException();
 }
 public abstract Task <LoginUserResult> Login(LoginUserCommand command);