public async Task <LoginDescriptor> LoginAsync(string username, string password)
        {
            var loginDescriptor = new LoginDescriptor();

            var account = await _accountDBService.SelectAccountByUserNameAsync(username);

            if (account == null)
            {
                loginDescriptor.Result = LoginResult.AccountNotFound;
                return(loginDescriptor);
            }

            if (account.Locked)
            {
                loginDescriptor.Result = LoginResult.AccountLocked;
                return(loginDescriptor);
            }

            var encryptResult = _encryptionService.Encrypt(password, account.Salt);

            if (account.PasswordHash != encryptResult.Hash)
            {
                loginDescriptor.Result = LoginResult.InvaildPassword;
                return(loginDescriptor);
            }

            loginDescriptor.Result    = LoginResult.Successful;
            loginDescriptor.AccountId = account.AccountId;

            return(loginDescriptor);
        }
        public static LoginAuthenticationBuilder AddLinkedLogin <TUserManager, TLinkedUserManager, TId>(
            this LoginAuthenticationBuilder builder,
            Action <LoginAuthenticationBuilder> externalLoginConfigure)
            where TUserManager : class, IUserManager <TId>
            where TLinkedUserManager : class, ILinkedUserManager
        {
            var externalLoginBuilder = new LoginAuthenticationBuilder(builder.Services);

            externalLoginConfigure(externalLoginBuilder);
            foreach (var kv in externalLoginBuilder)
            {
                var desc = new LoginDescriptor(kv.Key, kv.Value.Type, kv.Value.args);
                builder.AddLogin <LinkedLogin <TId> >(desc.Name, desc);
            }
            builder.Services.TryAddTransient <IUserManager <TId>, TUserManager>();
            builder.Services.TryAddTransient <ILinkedUserManager, TLinkedUserManager>();
            return(builder);
        }
Exemple #3
0
        public LinkedLogin(
            LoginDescriptor externalLoginDescriptor,
            IServiceProvider serviceProvider,
            ILinkedUserManager linkedUserManager,
            IUserManager <TUserId> userManager,
            IUsernameFormatter usernameFormatter = null)
            : base(userManager, usernameFormatter)
        {
            if (externalLoginDescriptor == null)
            {
                throw new ArgumentNullException(nameof(externalLoginDescriptor));
            }

            _externalLoginType      = externalLoginDescriptor.Type;
            _externalLoginName      = externalLoginDescriptor.Name;
            _externalLoginArguments = externalLoginDescriptor.Arguments;
            _linkedUserManager      = linkedUserManager ?? throw new ArgumentNullException(nameof(linkedUserManager));
            _serviceProvider        = serviceProvider ?? throw new ArgumentNullException(nameof(serviceProvider));
        }