Beispiel #1
0
        /// <summary>
        /// Generates a random token
        /// </summary>
        /// <returns></returns>
        public async Task <string> MakeOauthToken(DeltaConnection conn, ObjectId oauthApp, uint oauthScope)
        {
            //Generate a unique string
            string token = Tools.SecureStringTool.GenerateSecureString(62);

            while (await conn.AuthenticateUserToken(token) != null)
            {
                token = Tools.SecureStringTool.GenerateSecureString(62);
            }

            //Add some information. This is for future use
            token = "A." + token;

            //Now, create a token object
            DbToken t = new DbToken
            {
                created_utc       = DateTime.UtcNow,
                token             = token,
                user_id           = _id,
                _id               = MongoDB.Bson.ObjectId.GenerateNewId(),
                oauth_application = oauthApp,
                oauth_scope       = oauthScope
            };

            //Insert
            await conn.system_tokens.InsertOneAsync(t);

            //Return string
            return(token);
        }
Beispiel #2
0
        /// <summary>
        /// Authenticates a user using their token
        /// </summary>
        /// <param name="conn"></param>
        /// <param name="token"></param>
        /// <returns></returns>
        public static async Task <DbUser> AuthenticateUserToken(DeltaDatabaseConnection conn, string token)
        {
            //First, get our token object
            DbToken tok = await conn.GetTokenByTokenAsync(token);

            if (tok == null)
            {
                return(null);
            }

            //Now, get our user
            var u = await conn.GetUserByIdAsync(tok.user_id);

            if (u == null)
            {
                return(null);
            }
            return(u);
        }