aboutsummaryrefslogtreecommitdiff
path: root/ShareGuard.Web/DbModels/Link.cs
blob: 0cd66ac5b8af4a9c03bb72fea6edca5e9008fbd0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
namespace ShareGuard.Web.DbModels;

public class Link
{
    private static readonly string _tokenChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
    private static readonly Random _random = new();
    public int Id { get; set; }
    public string Token { get; set; }
    public string Name { get; set; }
    public string IpAddress { get; set; }
    public string? PeerPublicKey { get; set; }

    public static string GenerateToken(Database database)
    {
        var token = "";
        while (token == "" || database.Links.Any(link => link.Token == token))
        {
            token = "";
            for (var i = 0; i < 10; i++) token += _tokenChars[_random.Next(_tokenChars.Length)];
        }

        return token;
    }
}