示例#1
0
        public async Task <string> ChangePasswordAsync(UsrChangeUser passwords)
        {
            UsrAdmin user = new UsrAdmin();

            try
            {
                user = await _resumeContext.UsrAdmins.Where(users => users.Password == passwords.oldValue).FirstOrDefaultAsync();

                if (user == null)
                {
                    return("Incorrect password");
                }
                user.Password         = passwords.newValue;
                user.TokenDateOfDeath = DateTime.Now;
                if (await _resumeContext.SaveChangesAsync() == 1)
                {
                    return(null);
                }
                else
                {
                    return("Fails save DB");
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "Fail get or set data of DB");
                return("Fail get or set data of DB");
            }
        }
示例#2
0
        public async Task <string> ChangeLoginAsync(UsrChangeUser logins)
        {
            UsrAdmin user = new UsrAdmin();

            try
            {
                user = await _resumeContext.UsrAdmins.Where(users => users.Login == logins.oldValue).FirstOrDefaultAsync();

                if (user == null)
                {
                    return("Incorrect login");
                }
                user.Login = logins.newValue;
                if (await _resumeContext.SaveChangesAsync() == 1)
                {
                    return(null);
                }
                else
                {
                    return("Fails save DB");
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "Fail get or set data of DB");
                return("Fail get or set data of DB");
            }
        }
        public async Task <IActionResult> Auth(UsrAdmin user)
        {
            UsrDataShell result = await _userAuthentication.AuthenticationAsync(user);

            if (result.Error == null)
            {
                return(Ok(result.UsrData_));
            }
            SetErrorHeaders(result);
            return(BadRequest());
        }
示例#4
0
        public async Task <UsrAdmin> GetAdminUserAsync()
        {
            UsrAdmin user = new UsrAdmin();

            try
            {
                user = await _resumeContext.UsrAdmins.FirstOrDefaultAsync();
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "Fail get data of DB");
            }
            return(user);
        }
示例#5
0
        public async Task <string> CheckTokenAsync(string token)
        {
            UsrAdmin user = await _dbOperations.GetAdminUserAsync();

            if (user.Login == null)
            {
                return("Admin isn't be");
            }
            Token trueToken = new Token(user.Login, user.TokenDateOfDeath.ToString(), user.Login + user.Password);

            if (token != trueToken.GetToken())
            {
                return("Token invalid");
            }
            if (user.TokenDateOfDeath < DateTime.Now)
            {
                return("Token is old");
            }
            return(null);
        }
 private bool InitializeAdmin()
 {
     try
     {
         var                   builder          = new ConfigurationBuilder().AddJsonFile("appsettings.json");
         IConfiguration        AppConfiguration = builder.Build();
         IConfigurationSection adminOptions     = AppConfiguration.GetSection("Admin");
         if (adminOptions != null)
         {
             string adminLogin    = adminOptions.GetSection("login").Value;
             string adminPassword = adminOptions.GetSection("password").Value;
             if (adminLogin == null || adminPassword == null)
             {
                 _logger.LogError("Fail initialize login or password subsection in appsettings.json");
                 return(false);
             }
             if (_resumeContext.UsrAdmins.ToArray().Length == 0)
             {
                 var admin = new UsrAdmin()
                 {
                     Login = adminLogin, Password = _authentication.GetHashString(adminPassword)
                 };
                 _resumeContext.Add(admin);
                 _resumeContext.SaveChanges();
             }
             return(true);
         }
         else
         {
             _logger.LogError("Fail initialize admin section in appsettings.json");
             return(false);
         }
     }
     catch (Exception ex)
     {
         _logger.LogError(ex, "Fail initialize admin");
         return(false);
     }
 }
示例#7
0
        public async Task <UsrDataShell> AuthenticationAsync(UsrAdmin user)
        {
            UsrDataShell result       = new UsrDataShell();
            var          hashPassword = await _dbOperations.GetUserHashPasswordAsync(user.Login);

            if (hashPassword == null)
            {
                result.Error = "User not found";
                return(result);
            }
            if (hashPassword == "FAIL!")
            {
                result.Error = "Fail get data of DB";
                return(result);
            }
            if (GetHashString(user.Password) != hashPassword)
            {
                result.Error = "Password incorrect";
                return(result);
            }
            DateTime tokenDateOfDeath = DateTime.Now.AddHours(GetTokenLifetime());

            bool saveToken = await _dbOperations.SetTokenDateOfDeathAsync(user.Login, tokenDateOfDeath);

            if (!saveToken)
            {
                result.Error = "Fail set data of DB";
                return(result);
            }
            Token token = new Token(user.Login, tokenDateOfDeath.ToString(), user.Login + hashPassword);

            result.UsrData_ = new UsrAdmin()
            {
                TokenDateOfDeath = tokenDateOfDeath, Token = token.GetToken()
            };
            return(result);
        }