< Summary

Information
Class: Elsa.Identity.Services.UserManager
Assembly: Elsa.Identity
File(s): /home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Identity/Services/UserManager.cs
Line coverage
41%
Covered lines: 10
Uncovered lines: 14
Coverable lines: 24
Total lines: 54
Line coverage: 41.6%
Branch coverage
0%
Covered branches: 0
Total branches: 4
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
CreateUserAsync()0%2040%

File(s)

/home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Identity/Services/UserManager.cs

#LineLine coverage
 1using Elsa.Identity.Contracts;
 2using Elsa.Identity.Entities;
 3using Elsa.Identity.Models;
 4using Elsa.Workflows;
 5
 6namespace Elsa.Identity.Services;
 7
 8/// <summary>
 9/// Default implementation of <see cref="IUserManager"/>.
 10/// </summary>
 11public class UserManager : IUserManager
 12{
 13    private readonly IIdentityGenerator _identityGenerator;
 14    private readonly ISecretGenerator _secretGenerator;
 15    private readonly ISecretHasher _secretHasher;
 16    private readonly IUserStore _userStore;
 17
 318    public UserManager(
 319        IIdentityGenerator identityGenerator,
 320        ISecretGenerator secretGenerator,
 321        ISecretHasher secretHasher,
 322        IUserStore userStore)
 23    {
 324        _identityGenerator = identityGenerator;
 325        _secretGenerator = secretGenerator;
 326        _secretHasher = secretHasher;
 327        _userStore = userStore;
 328    }
 29
 30    /// <inheritdoc />
 31    public async Task<CreateUserResult> CreateUserAsync(
 32        string name,
 33        string? password = null,
 34        ICollection<string>? roles = null,
 35        CancellationToken cancellationToken = default)
 36    {
 037        var id = _identityGenerator.GenerateId();
 038        var plainTextPassword = string.IsNullOrWhiteSpace(password) ? _secretGenerator.Generate() : password.Trim();
 039        var hashedPassword = _secretHasher.HashSecret(plainTextPassword);
 40
 041        var user = new User
 042        {
 043            Id = id,
 044            Name = name,
 045            Roles = roles ?? new List<string>(),
 046            HashedPassword = hashedPassword.EncodeSecret(),
 047            HashedPasswordSalt = hashedPassword.EncodeSalt()
 048        };
 49
 050        await _userStore.SaveAsync(user, cancellationToken);
 51
 052        return new CreateUserResult(user, plainTextPassword);
 053    }
 54}