public bool RegisterToken(string cardNumber, out string token)
        {
            token = null;

            if (!string.IsNullOrEmpty(cardNumber) &&
                ContainsOnlyNumbers(cardNumber) &&
                cardNumber.Length == CardLength &&
                cardNumber[0] >= '3' && cardNumber[0] <= '6' &&
                IsLuhnValid(cardNumber))
            {
                lock (cards)
                {
                    string possibleToken;
                    do
                    {
                        possibleToken = GeneratePossibleToken(cardNumber);
                    } while (cards.ContainsKey(possibleToken));

                    cards.Add(possibleToken, new Card()
                    {
                        CardNumber = cardNumber, Token = possibleToken
                    });
                    storage.Save(cards.Values.ToArray());
                    token = possibleToken;
                }

                return(true);
            }

            return(false);
        }
예제 #2
0
 public void Register(Register register)
 {
     {
         if (users.ContainsKey(register.Username))
         {
             throw new Exception("Username taken.");
         }
         else
         {
             users.Add(register.Username, new User()
             {
                 Username = register.Username,
                 Password = register.Password,
                 Rights   = register.Rights
             });
             storage.Save(users.Values.ToArray());
         }
     }
 }