Example #1
0
        /// <summary>
        ///  Function to generate unique token with expiry against the provided userId.
        ///  Also add a record in database for generated token.
        /// </summary>
        /// <param name="userId"></param>
        /// <returns></returns>
        public Token GenerateToken(int userId)
        {
            var      db = new DBAMPContext();
            Token    token;
            string   AuthToken;
            DateTime issuedOn;
            DateTime expiredOn;

            bool isValidateToken = false;

            token = db.Tokens.Where(t => t.UserId == userId).FirstOrDefault <Token>();

            if (token != null)
            {
                isValidateToken = ValidateToken(token.AuthToken, userId.ToString());
            }


            if (!isValidateToken)
            {
                AuthToken = Guid.NewGuid().ToString();
                issuedOn  = DateTime.Now;
                expiredOn = DateTime.Now.AddSeconds(
                    Convert.ToDouble(ConfigurationManager.AppSettings["AuthTokenExpiry"]));
                var tokendomain = new Token
                {
                    UserId    = userId,
                    AuthToken = AuthToken,
                    IssuedOn  = issuedOn,
                    ExpiresOn = expiredOn
                };
                int rtn = db.ApiTokenInsert(userId, AuthToken, issuedOn, expiredOn);
            }

            else
            {
                issuedOn  = token.IssuedOn;
                expiredOn = token.ExpiresOn;
                AuthToken = token.AuthToken;
            }

            var tokenModel = new Token()
            {
                UserId    = userId,
                IssuedOn  = issuedOn,
                ExpiresOn = expiredOn,
                AuthToken = AuthToken
            };

            return(tokenModel);
        }