DreamineVMS.Web 1.0.0.0
DreamineVMS 에이전트가 제공하는 HLS 카메라 영상을 브라우저에서 관리·재생하는 원격 CCTV 웹 서비스입니다.
로딩중...
검색중...
일치하는것 없음
DreamineVMS.Web.Services.Auth.VmsUserService 클래스 참조sealed

더 자세히 ...

DreamineVMS.Web.Services.Auth.VmsUserService에 대한 협력 다이어그램:

Public 멤버 함수

 VmsUserService (VmsDatabase db)
async Task<(bool Ok, string Error, VmsUser? User)> RegisterAsync (string email, string displayName, string password)
async Task<(bool Ok, string Error, VmsUser? User)> LoginAsync (string email, string password)
async Task< VmsUser?> EnsureExternalUserAsync (ClaimsPrincipal principal)
async Task<(bool Ok, string Error, VmsUser? User)> SetAgentPasswordAsync (string userId, string password, string confirmPassword)
async Task< VmsUser?> FindByIdAsync (string id)
List< VmsUserGetUsersWithPublicCameras ()
async Task< VmsUser?> FindBySlugAsync (string slug)
async Task SetLayoutAsync (string userId, string layout)
async Task UpdateOgAsync (string userId, string ogTitle, string ogDescription, string ogImage)

Private 멤버 함수

async Task< VmsUser?> FindByEmailAsync (string email)
async Task< string > UniqueSlugAsync (string displayName)
async Task UpdatePasswordHashAsync (string userId, string hash, string salt)

정적 Private 멤버 함수

static async Task< VmsUser?> ReadOneAsync (SqliteCommand cmd)
static VmsUser ReadUser (SqliteDataReader r)
static VmsUser WithPasswordHash (VmsUser source, string passwordHash, string passwordSalt)
static string SlugFrom (string name)
static string NormalizeEmail (string? email)
static string BuildPseudoEmail (string provider, string identityId)
static bool VerifyLegacySaltedSha256 (string password, string salt, string storedHash)

Private 속성

readonly VmsDatabase _db

상세한 설명

Vms User Service 기능과 관련 상태를 캡슐화합니다.

VmsUserService.cs 파일의 18 번째 라인에서 정의되었습니다.

생성자 & 소멸자 문서화

◆ VmsUserService()

DreamineVMS.Web.Services.Auth.VmsUserService.VmsUserService ( VmsDatabase db)
inline

지정한 설정으로 VmsUserService 클래스의 새 인스턴스를 초기화합니다.

매개변수
dbdb에 사용할 VmsDatabase 값입니다.

VmsUserService.cs 파일의 46 번째 라인에서 정의되었습니다.

46=> _db = db;

다음을 참조함 : _db.

멤버 함수 문서화

◆ BuildPseudoEmail()

string DreamineVMS.Web.Services.Auth.VmsUserService.BuildPseudoEmail ( string provider,
string identityId )
inlinestaticprivate

Pseudo Email 값을 구성합니다.

매개변수
providerprovider에 사용할 string 값입니다.
identityIdidentity Id에 사용할 string 값입니다.
반환값
Build Pseudo Email 작업에서 생성한 string 결과입니다.

VmsUserService.cs 파일의 882 번째 라인에서 정의되었습니다.

883 {
884 var safeProvider = SlugFrom(provider);
885 var safeId = SlugFrom(identityId);
886 return $"{safeProvider}-{safeId}@agent.codemaru.local";
887 }
var provider
Definition Program.cs:38

다음을 참조함 : provider, SlugFrom().

다음에 의해서 참조됨 : EnsureExternalUserAsync().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ EnsureExternalUserAsync()

async Task< VmsUser?> DreamineVMS.Web.Services.Auth.VmsUserService.EnsureExternalUserAsync ( ClaimsPrincipal principal)
inline

Ensure External User Async 작업을 수행합니다.

매개변수
principalprincipal에 사용할 ClaimsPrincipal 값입니다.
반환값
Ensure External User Async 작업에서 생성한 Task<VmsUser?> 결과입니다.

VmsUserService.cs 파일의 220 번째 라인에서 정의되었습니다.

221 {
222 if (principal.Identity?.IsAuthenticated != true)
223 {
224 return null;
225 }
226
227 var identityId = principal.FindFirstValue(DreamineIdentityExtensions.UserIdClaimType);
228 if (string.IsNullOrWhiteSpace(identityId))
229 {
230 return null;
231 }
232
233 var userId = $"oauth-{identityId}";
234 var userById = await FindByIdAsync(userId);
235 if (userById is not null)
236 {
237 return userById;
238 }
239
240 var provider = principal.FindFirstValue(DreamineIdentityExtensions.ProviderClaimType) ?? "OAuth";
241 var email = NormalizeEmail(principal.FindFirstValue(ClaimTypes.Email));
242 var displayName = principal.FindFirstValue(ClaimTypes.Name) ?? email;
243 if (string.IsNullOrWhiteSpace(displayName))
244 {
245 displayName = $"{provider} 사용자";
246 }
247
248 if (!string.IsNullOrWhiteSpace(email))
249 {
250 var userByEmail = await FindByEmailAsync(email);
251 if (userByEmail is not null)
252 {
253 return userByEmail;
254 }
255 }
256 else
257 {
258 email = BuildPseudoEmail(provider, identityId);
259 }
260
261 var user = new VmsUser
262 {
263 Id = userId,
264 Email = email,
265 DisplayName = displayName.Trim(),
266 PublicSlug = await UniqueSlugAsync(displayName),
267 PasswordHash = "",
268 PasswordSalt = "",
269 CreatedAt = DateTimeOffset.UtcNow
270 };
271
272 using var conn = _db.Open();
273 using var cmd = conn.CreateCommand();
274 cmd.CommandText = """
275 INSERT INTO users (id, email, display_name, public_slug, password_hash, password_salt, created_at)
276 VALUES ($id, $email, $dn, $slug, $hash, $salt, $ca)
277 """;
278 cmd.Parameters.AddWithValue("$id", user.Id);
279 cmd.Parameters.AddWithValue("$email", user.Email);
280 cmd.Parameters.AddWithValue("$dn", user.DisplayName);
281 cmd.Parameters.AddWithValue("$slug", user.PublicSlug);
282 cmd.Parameters.AddWithValue("$hash", user.PasswordHash);
283 cmd.Parameters.AddWithValue("$salt", user.PasswordSalt);
284 cmd.Parameters.AddWithValue("$ca", user.CreatedAt.ToString("O"));
285 await cmd.ExecuteNonQueryAsync();
286
287 return user;
288 }

다음을 참조함 : _db, BuildPseudoEmail(), FindByEmailAsync(), FindByIdAsync(), NormalizeEmail(), provider, UniqueSlugAsync().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ FindByEmailAsync()

async Task< VmsUser?> DreamineVMS.Web.Services.Auth.VmsUserService.FindByEmailAsync ( string email)
inlineprivate

By Email Async 항목을 찾습니다.

매개변수
emailemail에 사용할 string 값입니다.
반환값
Find By Email Async 작업에서 생성한 Task<VmsUser?> 결과입니다.

VmsUserService.cs 파일의 482 번째 라인에서 정의되었습니다.

483 {
484 using var conn = _db.Open();
485 using var cmd = conn.CreateCommand();
486 cmd.CommandText = "SELECT * FROM users WHERE email = $email LIMIT 1";
487 cmd.Parameters.AddWithValue("$email", email);
488 return await ReadOneAsync(cmd);
489 }

다음을 참조함 : _db, ReadOneAsync().

다음에 의해서 참조됨 : EnsureExternalUserAsync(), LoginAsync(), RegisterAsync().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ FindByIdAsync()

async Task< VmsUser?> DreamineVMS.Web.Services.Auth.VmsUserService.FindByIdAsync ( string id)
inline

By Id Async 항목을 찾습니다.

매개변수
idid에 사용할 string 값입니다.
반환값
Find By Id Async 작업에서 생성한 Task<VmsUser?> 결과입니다.

VmsUserService.cs 파일의 382 번째 라인에서 정의되었습니다.

383 {
384 using var conn = _db.Open();
385 using var cmd = conn.CreateCommand();
386 cmd.CommandText = "SELECT * FROM users WHERE id = $id LIMIT 1";
387 cmd.Parameters.AddWithValue("$id", id);
388 return await ReadOneAsync(cmd);
389 }

다음을 참조함 : _db, ReadOneAsync().

다음에 의해서 참조됨 : EnsureExternalUserAsync(), SetAgentPasswordAsync().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ FindBySlugAsync()

async Task< VmsUser?> DreamineVMS.Web.Services.Auth.VmsUserService.FindBySlugAsync ( string slug)
inline

By Slug Async 항목을 찾습니다.

매개변수
slugslug에 사용할 string 값입니다.
반환값
Find By Slug Async 작업에서 생성한 Task<VmsUser?> 결과입니다.

VmsUserService.cs 파일의 449 번째 라인에서 정의되었습니다.

450 {
451 using var conn = _db.Open();
452 using var cmd = conn.CreateCommand();
453 cmd.CommandText = "SELECT * FROM users WHERE public_slug = $slug LIMIT 1";
454 cmd.Parameters.AddWithValue("$slug", slug.ToLowerInvariant());
455 return await ReadOneAsync(cmd);
456 }

다음을 참조함 : _db, ReadOneAsync().

다음에 의해서 참조됨 : UniqueSlugAsync(), Use().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ GetUsersWithPublicCameras()

List< VmsUser > DreamineVMS.Web.Services.Auth.VmsUserService.GetUsersWithPublicCameras ( )
inline

공개 카메라(is_public=1, enabled=1)가 있는 유저 목록을 반환합니다.

반환값
Get Users With Public Cameras 작업에서 생성한 List<VmsUser> 결과입니다.

VmsUserService.cs 파일의 407 번째 라인에서 정의되었습니다.

408 {
409 using var conn = _db.Open();
410 using var cmd = conn.CreateCommand();
411 cmd.CommandText = """
412 SELECT DISTINCT u.*
413 FROM users u
414 INNER JOIN cameras c ON c.tenant_id = u.id
415 WHERE c.is_public = 1 AND c.enabled = 1
416 ORDER BY u.display_name
417 """;
418 using var reader = cmd.ExecuteReader();
419 var list = new List<VmsUser>();
420 while (reader.Read())
421 list.Add(ReadUser(reader));
422 return list;
423 }

다음을 참조함 : _db, ReadUser().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ LoginAsync()

async Task<(bool Ok, string Error, VmsUser? User)> DreamineVMS.Web.Services.Auth.VmsUserService.LoginAsync ( string email,
string password )
inline

Login Async 작업을 수행합니다.

매개변수
emailemail에 사용할 string 값입니다.
passwordpassword에 사용할 string 값입니다.
반환값
Login Async 작업에서 생성한 Task<(bool Ok, string Error, VmsUser? User)> 결과입니다.

VmsUserService.cs 파일의 166 번째 라인에서 정의되었습니다.

167 {
168 email = email.Trim().ToLowerInvariant();
169 var user = await FindByEmailAsync(email);
170 if (user is null) return (false, "이메일 또는 비밀번호가 올바르지 않습니다.", null);
171
172 if (string.IsNullOrWhiteSpace(user.PasswordHash))
173 return (false, "에이전트 연결 비밀번호가 아직 설정되지 않았습니다.", null);
174
175 var verification = DreaminePasswordHasher.VerifyPassword(password, user.PasswordHash, out var upgradedHash);
176 if (verification is PasswordHashVerificationResult.Failed &&
177 !string.IsNullOrWhiteSpace(user.PasswordSalt) &&
178 VerifyLegacySaltedSha256(password, user.PasswordSalt, user.PasswordHash))
179 {
180 verification = PasswordHashVerificationResult.SuccessRehashNeeded;
181 upgradedHash = DreaminePasswordHasher.HashPassword(password);
182 }
183
184 if (verification is PasswordHashVerificationResult.Failed)
185 return (false, "이메일 또는 비밀번호가 올바르지 않습니다.", null);
186
187 if (verification is PasswordHashVerificationResult.SuccessRehashNeeded && upgradedHash is not null)
188 {
189 await UpdatePasswordHashAsync(user.Id, upgradedHash, "");
190 user = WithPasswordHash(user, upgradedHash, "");
191 }
192
193 return (true, "", user);
194 }

다음을 참조함 : FindByEmailAsync(), UpdatePasswordHashAsync(), VerifyLegacySaltedSha256(), WithPasswordHash().

다음에 의해서 참조됨 : MapPost().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ NormalizeEmail()

string DreamineVMS.Web.Services.Auth.VmsUserService.NormalizeEmail ( string? email)
inlinestaticprivate

Normalize Email 작업을 수행합니다.

매개변수
emailemail에 사용할 string? 값입니다.
반환값
Normalize Email 작업에서 생성한 string 결과입니다.

VmsUserService.cs 파일의 847 번째 라인에서 정의되었습니다.

847 =>
848 string.IsNullOrWhiteSpace(email) ? "" : email.Trim().ToLowerInvariant();

다음에 의해서 참조됨 : EnsureExternalUserAsync().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ ReadOneAsync()

async Task< VmsUser?> DreamineVMS.Web.Services.Auth.VmsUserService.ReadOneAsync ( SqliteCommand cmd)
inlinestaticprivate

One Async 데이터를 읽습니다.

매개변수
cmdcmd에 사용할 SqliteCommand 값입니다.
반환값
Read One Async 작업에서 생성한 Task<VmsUser?> 결과입니다.

VmsUserService.cs 파일의 619 번째 라인에서 정의되었습니다.

620 {
621 using var reader = await cmd.ExecuteReaderAsync();
622 if (!await reader.ReadAsync()) return null;
623 return ReadUser(reader);
624 }

다음을 참조함 : ReadUser().

다음에 의해서 참조됨 : FindByEmailAsync(), FindByIdAsync(), FindBySlugAsync().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ ReadUser()

VmsUser DreamineVMS.Web.Services.Auth.VmsUserService.ReadUser ( SqliteDataReader r)
inlinestaticprivate

User 데이터를 읽습니다.

매개변수
rr에 사용할 SqliteDataReader 값입니다.
반환값
Read User 작업에서 생성한 VmsUser 결과입니다.

VmsUserService.cs 파일의 650 번째 라인에서 정의되었습니다.

651 {
652 #pragma warning disable CS1587
679 string Col(string name) => r.IsDBNull(r.GetOrdinal(name)) ? "" : r.GetString(r.GetOrdinal(name));
680 #pragma warning restore CS1587
681 var layoutOrd = r.GetOrdinal("live_layout");
682 return new VmsUser
683 {
684 Id = r.GetString(r.GetOrdinal("id")),
685 Email = r.GetString(r.GetOrdinal("email")),
686 DisplayName = r.GetString(r.GetOrdinal("display_name")),
687 PublicSlug = r.GetString(r.GetOrdinal("public_slug")),
688 PasswordHash = r.GetString(r.GetOrdinal("password_hash")),
689 PasswordSalt = r.GetString(r.GetOrdinal("password_salt")),
690 CreatedAt = DateTimeOffset.Parse(r.GetString(r.GetOrdinal("created_at"))),
691 LiveLayout = r.IsDBNull(layoutOrd) ? "auto" : r.GetString(layoutOrd),
692 OgTitle = Col("og_title"),
693 OgDescription = Col("og_description"),
694 OgImage = Col("og_image")
695 };
696 }

다음에 의해서 참조됨 : GetUsersWithPublicCameras(), ReadOneAsync().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ RegisterAsync()

async Task<(bool Ok, string Error, VmsUser? User)> DreamineVMS.Web.Services.Auth.VmsUserService.RegisterAsync ( string email,
string displayName,
string password )
inline

Register Async 작업을 수행합니다.

매개변수
emailemail에 사용할 string 값입니다.
displayNamedisplay Name에 사용할 string 값입니다.
passwordpassword에 사용할 string 값입니다.
반환값
Register Async 작업에서 생성한 Task<(bool Ok, string Error, VmsUser? User)> 결과입니다.

VmsUserService.cs 파일의 88 번째 라인에서 정의되었습니다.

90 {
91 email = email.Trim().ToLowerInvariant();
92 displayName = displayName.Trim();
93
94 if (string.IsNullOrWhiteSpace(email)) return (false, "이메일을 입력하세요.", null);
95 if (string.IsNullOrWhiteSpace(displayName)) return (false, "이름을 입력하세요.", null);
96 if (string.IsNullOrWhiteSpace(password) || password.Length < 8)
97 return (false, "비밀번호는 8자 이상이어야 합니다.", null);
98
99 if (await FindByEmailAsync(email) is not null)
100 return (false, "이미 사용 중인 이메일입니다.", null);
101
102 var hash = DreaminePasswordHasher.HashPassword(password);
103 var slug = await UniqueSlugAsync(displayName);
104
105 var user = new VmsUser
106 {
107 Id = Guid.NewGuid().ToString("N"),
108 Email = email,
109 DisplayName = displayName,
110 PublicSlug = slug,
111 PasswordHash = hash,
112 PasswordSalt = "",
113 CreatedAt = DateTimeOffset.UtcNow
114 };
115
116 using var conn = _db.Open();
117 using var cmd = conn.CreateCommand();
118 cmd.CommandText = """
119 INSERT INTO users (id, email, display_name, public_slug, password_hash, password_salt, created_at)
120 VALUES ($id, $email, $dn, $slug, $hash, $salt, $ca)
121 """;
122 cmd.Parameters.AddWithValue("$id", user.Id);
123 cmd.Parameters.AddWithValue("$email", user.Email);
124 cmd.Parameters.AddWithValue("$dn", user.DisplayName);
125 cmd.Parameters.AddWithValue("$slug", user.PublicSlug);
126 cmd.Parameters.AddWithValue("$hash", user.PasswordHash);
127 cmd.Parameters.AddWithValue("$salt", user.PasswordSalt);
128 cmd.Parameters.AddWithValue("$ca", user.CreatedAt.ToString("O"));
129 await cmd.ExecuteNonQueryAsync();
130
131 return (true, "", user);
132 }

다음을 참조함 : _db, FindByEmailAsync(), UniqueSlugAsync().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ SetAgentPasswordAsync()

async Task<(bool Ok, string Error, VmsUser? User)> DreamineVMS.Web.Services.Auth.VmsUserService.SetAgentPasswordAsync ( string userId,
string password,
string confirmPassword )
inline

Agent Password Async 값을 설정합니다.

매개변수
userIduser Id에 사용할 string 값입니다.
passwordpassword에 사용할 string 값입니다.
confirmPasswordconfirm Password에 사용할 string 값입니다.
반환값
Set Agent Password Async 작업에서 생성한 Task<(bool Ok, string Error, VmsUser? User)> 결과입니다.

VmsUserService.cs 파일의 330 번째 라인에서 정의되었습니다.

334 {
335 if (string.IsNullOrWhiteSpace(password) || password.Length < 8)
336 {
337 return (false, "에이전트 연결 비밀번호는 8자 이상이어야 합니다.", null);
338 }
339
340 if (!string.Equals(password, confirmPassword, StringComparison.Ordinal))
341 {
342 return (false, "비밀번호 확인이 일치하지 않습니다.", null);
343 }
344
345 var user = await FindByIdAsync(userId);
346 if (user is null)
347 {
348 return (false, "사용자를 찾을 수 없습니다.", null);
349 }
350
351 var hash = DreaminePasswordHasher.HashPassword(password);
352
353 await UpdatePasswordHashAsync(userId, hash, "");
354
355 return (true, "", await FindByIdAsync(userId));
356 }

다음을 참조함 : FindByIdAsync(), UpdatePasswordHashAsync().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ SetLayoutAsync()

async Task DreamineVMS.Web.Services.Auth.VmsUserService.SetLayoutAsync ( string userId,
string layout )
inline

Layout Async 값을 설정합니다.

매개변수
userIduser Id에 사용할 string 값입니다.
layoutlayout에 사용할 string 값입니다.
반환값
Set Layout Async 작업에서 생성한 Task 결과입니다.

VmsUserService.cs 파일의 523 번째 라인에서 정의되었습니다.

524 {
525 using var conn = _db.Open();
526 using var cmd = conn.CreateCommand();
527 cmd.CommandText = "UPDATE users SET live_layout = $layout WHERE id = $id";
528 cmd.Parameters.AddWithValue("$layout", layout);
529 cmd.Parameters.AddWithValue("$id", userId);
530 await cmd.ExecuteNonQueryAsync();
531 }

다음을 참조함 : _db.

◆ SlugFrom()

string DreamineVMS.Web.Services.Auth.VmsUserService.SlugFrom ( string name)
inlinestaticprivate

Slug From 작업을 수행합니다.

매개변수
namename에 사용할 string 값입니다.
반환값
Slug From 작업에서 생성한 string 결과입니다.

VmsUserService.cs 파일의 811 번째 라인에서 정의되었습니다.

812 {
813 var sb = new StringBuilder();
814 foreach (var c in name.ToLowerInvariant())
815 {
816 if (char.IsLetterOrDigit(c)) sb.Append(c);
817 else if (c is ' ' or '-' or '_') sb.Append('-');
818 }
819 var s = sb.ToString().Trim('-');
820 return string.IsNullOrWhiteSpace(s) ? "user" : s;
821 }

다음에 의해서 참조됨 : BuildPseudoEmail(), UniqueSlugAsync().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ UniqueSlugAsync()

async Task< string > DreamineVMS.Web.Services.Auth.VmsUserService.UniqueSlugAsync ( string displayName)
inlineprivate

Unique Slug Async 작업을 수행합니다.

매개변수
displayNamedisplay Name에 사용할 string 값입니다.
반환값
Unique Slug Async 작업에서 생성한 Task<string> 결과입니다.

VmsUserService.cs 파일의 777 번째 라인에서 정의되었습니다.

778 {
779 var base_ = SlugFrom(displayName);
780 var candidate = base_;
781 int n = 2;
782 while (await FindBySlugAsync(candidate) is not null)
783 candidate = $"{base_}{n++}";
784 return candidate;
785 }

다음을 참조함 : FindBySlugAsync(), SlugFrom().

다음에 의해서 참조됨 : EnsureExternalUserAsync(), RegisterAsync().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ UpdateOgAsync()

async Task DreamineVMS.Web.Services.Auth.VmsUserService.UpdateOgAsync ( string userId,
string ogTitle,
string ogDescription,
string ogImage )
inline

Update Og Async 작업을 수행합니다.

매개변수
userIduser Id에 사용할 string 값입니다.
ogTitleog Title에 사용할 string 값입니다.
ogDescriptionog Description에 사용할 string 값입니다.
ogImageog Image에 사용할 string 값입니다.
반환값
Update Og Async 작업에서 생성한 Task 결과입니다.

VmsUserService.cs 파일의 581 번째 라인에서 정의되었습니다.

582 {
583 using var conn = _db.Open();
584 using var cmd = conn.CreateCommand();
585 cmd.CommandText = """
586 UPDATE users SET og_title = $t, og_description = $d, og_image = $i WHERE id = $id
587 """;
588 cmd.Parameters.AddWithValue("$t", ogTitle.Trim());
589 cmd.Parameters.AddWithValue("$d", ogDescription.Trim());
590 cmd.Parameters.AddWithValue("$i", ogImage.Trim());
591 cmd.Parameters.AddWithValue("$id", userId);
592 await cmd.ExecuteNonQueryAsync();
593 }

다음을 참조함 : _db.

◆ UpdatePasswordHashAsync()

async Task DreamineVMS.Web.Services.Auth.VmsUserService.UpdatePasswordHashAsync ( string userId,
string hash,
string salt )
inlineprivate

Update Password Hash Async 작업을 수행합니다.

매개변수
userIduser Id에 사용할 string 값입니다.
hashhash에 사용할 string 값입니다.
saltsalt에 사용할 string 값입니다.
반환값
Update Password Hash Async 작업에서 생성한 Task 결과입니다.

VmsUserService.cs 파일의 929 번째 라인에서 정의되었습니다.

930 {
931 using var conn = _db.Open();
932 using var cmd = conn.CreateCommand();
933 cmd.CommandText = "UPDATE users SET password_hash = $hash, password_salt = $salt WHERE id = $id";
934 cmd.Parameters.AddWithValue("$hash", hash);
935 cmd.Parameters.AddWithValue("$salt", salt);
936 cmd.Parameters.AddWithValue("$id", userId);
937 await cmd.ExecuteNonQueryAsync();
938 }

다음을 참조함 : _db.

다음에 의해서 참조됨 : LoginAsync(), SetAgentPasswordAsync().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ VerifyLegacySaltedSha256()

bool DreamineVMS.Web.Services.Auth.VmsUserService.VerifyLegacySaltedSha256 ( string password,
string salt,
string storedHash )
inlinestaticprivate

Verify Legacy Salted Sha256 작업을 수행합니다.

매개변수
passwordpassword에 사용할 string 값입니다.
saltsalt에 사용할 string 값입니다.
storedHashstored Hash에 사용할 string 값입니다.
반환값
Verify Legacy Salted Sha256 조건이 충족되면 true이고, 그렇지 않으면 false입니다.

VmsUserService.cs 파일의 980 번째 라인에서 정의되었습니다.

981 {
982 var bytes = Encoding.UTF8.GetBytes(password + salt);
983 var actual = Convert.ToHexString(SHA256.HashData(bytes)).ToLowerInvariant();
984 return string.Equals(actual, storedHash, StringComparison.OrdinalIgnoreCase);
985 }

다음에 의해서 참조됨 : LoginAsync().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ WithPasswordHash()

VmsUser DreamineVMS.Web.Services.Auth.VmsUserService.WithPasswordHash ( VmsUser source,
string passwordHash,
string passwordSalt )
inlinestaticprivate

With Password Hash 작업을 수행합니다.

매개변수
sourcesource에 사용할 VmsUser 값입니다.
passwordHashpassword Hash에 사용할 string 값입니다.
passwordSaltpassword Salt에 사용할 string 값입니다.
반환값
With Password Hash 작업에서 생성한 VmsUser 결과입니다.

VmsUserService.cs 파일의 738 번째 라인에서 정의되었습니다.

738 => new()
739 {
740 Id = source.Id,
741 Email = source.Email,
742 DisplayName = source.DisplayName,
743 PublicSlug = source.PublicSlug,
744 PasswordHash = passwordHash,
745 PasswordSalt = passwordSalt,
746 CreatedAt = source.CreatedAt,
747 LiveLayout = source.LiveLayout,
748 OgTitle = source.OgTitle,
749 OgDescription = source.OgDescription,
750 OgImage = source.OgImage
751 };

다음을 참조함 : DreamineVMS.Web.Models.VmsUser.CreatedAt, DreamineVMS.Web.Models.VmsUser.DisplayName, DreamineVMS.Web.Models.VmsUser.Email, DreamineVMS.Web.Models.VmsUser.Id, DreamineVMS.Web.Models.VmsUser.LiveLayout, DreamineVMS.Web.Models.VmsUser.OgDescription, DreamineVMS.Web.Models.VmsUser.OgTitle, DreamineVMS.Web.Models.VmsUser.PublicSlug.

다음에 의해서 참조됨 : LoginAsync().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

멤버 데이터 문서화

◆ _db

readonly VmsDatabase DreamineVMS.Web.Services.Auth.VmsUserService._db
private

이 클래스에 대한 문서화 페이지는 다음의 파일로부터 생성되었습니다.: