예제 #1
0
        /// <summary>
        /// リクエストトークンをAPIモデルに変換します。
        /// </summary>
        /// <param name="dbModel">データベースモデル</param>
        /// <returns>APIモデル</returns>
        public static ApiModels.RequestToken ToApiModel(this T_REQUEST_TOKEN dbModel)
        {
            if (dbModel == null)
            {
                throw new ArgumentNullException("dbModel");
            }

            return(new RequestToken
            {
                Value = dbModel.VALUE,
                CreationTime = dbModel.CREATION_TIME.Value,
                ExpirationTime = dbModel.EXPIRATION_TIME.Value,
            });
        }
예제 #2
0
        /// <summary>
        /// 指定されたトークンを削除します。
        /// </summary>
        /// <param name="token">トークン</param>
        /// <returns>削除に成功したかどうか</returns>
        public async Task <bool> DeleteAsync(string token)
        {
            var parameter = new T_REQUEST_TOKEN {
                VALUE = token
            };

            using (var connection = DbConnector.CreateDbConnection())
            {
                connection.Open();
                var result = await connection.DeleteAsync(parameter);

                return(result == 1);
            }
        }
예제 #3
0
        /// <summary>
        /// 新規にトークンを発行します。
        /// </summary>
        /// <returns>生成されたリクエストトークン</returns>
        public async Task <RequestToken> CreateAsync()
        {
            using (var connection = DbConnector.CreateDbConnection())
            {
                connection.Open();
                var now   = DateTime.Now;
                var token = new T_REQUEST_TOKEN
                {
                    VALUE           = Guid.NewGuid().ToString(),
                    CREATION_TIME   = now,
                    EXPIRATION_TIME = now + AuthSettings.RequestTokenValidDuration,
                };
                var result = await connection.InsertAsync(token).ConfigureAwait(false);

                return(result == 1 ? token.ToApiModel() : null);
            }
        }
예제 #4
0
        /// <summary>
        /// 指定されたトークンが有効かどうかを確認します。
        /// </summary>
        /// <param name="token">トークン</param>
        /// <returns>有効かどうか</returns>
        public async Task <bool> IsValidAsync(string token)
        {
            var sql       = PrimitiveSql.CreateSelectSql <T_REQUEST_TOKEN>();
            var parameter = new T_REQUEST_TOKEN {
                VALUE = token
            };

            using (var connection = DbConnector.CreateDbConnection())
            {
                connection.Open();
                var record = (await connection.QueryAsync <T_REQUEST_TOKEN>(sql, parameter)
                              .ConfigureAwait(false))
                             .FirstOrDefault();
                return(record == null
                    ? false
                    : DateTime.Now <= record.EXPIRATION_TIME);
            }
        }