You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
2.0 KiB
58 lines
2.0 KiB
using System.Data;
|
|
using Microsoft.Data.SqlClient;
|
|
|
|
namespace Housing.Services;
|
|
|
|
public sealed class LoginAccountRepository
|
|
{
|
|
private readonly DatabaseSettings _databaseSettings;
|
|
private readonly LoginSettings _loginSettings;
|
|
|
|
public LoginAccountRepository(DatabaseSettings databaseSettings, LoginSettings loginSettings)
|
|
{
|
|
_databaseSettings = databaseSettings;
|
|
_loginSettings = loginSettings;
|
|
}
|
|
|
|
public async Task<bool> ExistsAsync(string loginId, string password)
|
|
{
|
|
using var connection = new SqlConnection(CreateConnectionString());
|
|
using var command = connection.CreateCommand();
|
|
|
|
command.CommandText = $@"
|
|
SELECT TOP (1) 1
|
|
FROM {_loginSettings.GetQuotedTableName()}
|
|
WHERE {_loginSettings.GetQuotedIdColumn()} = @LoginId
|
|
AND {_loginSettings.GetQuotedPasswordColumn()} = @Password;";
|
|
|
|
command.Parameters.Add(new SqlParameter("@LoginId", SqlDbType.NVarChar, 50) { Value = loginId });
|
|
command.Parameters.Add(new SqlParameter("@Password", SqlDbType.NVarChar, 50) { Value = password });
|
|
|
|
await connection.OpenAsync();
|
|
var result = await command.ExecuteScalarAsync();
|
|
return result is not null;
|
|
}
|
|
|
|
private string CreateConnectionString()
|
|
{
|
|
if (string.IsNullOrWhiteSpace(_databaseSettings.Ip) ||
|
|
string.IsNullOrWhiteSpace(_databaseSettings.Database) ||
|
|
string.IsNullOrWhiteSpace(_databaseSettings.DbId))
|
|
{
|
|
throw new InvalidOperationException("Database.ini의 IP, Database, DbId 값을 확인하세요.");
|
|
}
|
|
|
|
var builder = new SqlConnectionStringBuilder
|
|
{
|
|
DataSource = _databaseSettings.Ip,
|
|
InitialCatalog = _databaseSettings.Database,
|
|
UserID = _databaseSettings.DbId,
|
|
Password = _databaseSettings.DbPw,
|
|
Encrypt = _databaseSettings.Encrypt,
|
|
TrustServerCertificate = _databaseSettings.TrustServerCertificate,
|
|
ConnectTimeout = _databaseSettings.Timeout
|
|
};
|
|
|
|
return builder.ConnectionString;
|
|
}
|
|
}
|
|
|