/** * Build token for authentication on WebSocket */ public async Task <string> BuildToken(string apiKey) { var createTokenResponse = new CreateTokenResponse(); var createApiFailedResponse = new CreateApiResponseFailed(); var account = await this._accountRepository.GetAccountByApiKey(apiKey); if (account == null) { createApiFailedResponse.Reason = Enum.GetName(typeof(CreateApiFailedEnum), CreateApiFailedEnum.FAILED); return(JsonConvert.SerializeObject(createApiFailedResponse)); } if (((DateTime)account.ApiKeyExpirationDate <= DateTime.Now)) { createApiFailedResponse.Reason = Enum.GetName(typeof(CreateApiFailedEnum), CreateApiFailedEnum.NOTOKEN); return(JsonConvert.SerializeObject(createApiFailedResponse)); } this._logger.Debug($"Token value before edit {account.Token}"); //edit token and save it this._accountRepository.Entities().AddOrUpdate(account.Id, account, (i, editedAccount) => { editedAccount.Token = Guid.NewGuid().ToString(); editedAccount.IsEdited = true; return(editedAccount); }); createTokenResponse.Token = account.Token;//"7j60imkfu60w";//account.Token; this._logger.Debug($"Token value after edit {createTokenResponse.Token}"); return(JsonConvert.SerializeObject(createTokenResponse)); }
/** * Get Ticket on WebSocket */ public async Task <string> GetTicket(string ticket) { var createApiFailedResponse = new CreateApiResponseFailed(); var account = await this._accountRepository.GetAccountByTicket(ticket); if (account == null) { createApiFailedResponse.Reason = Enum.GetName(typeof(CreateApiFailedEnum), CreateApiFailedEnum.FAILED); return(JsonConvert.SerializeObject(createApiFailedResponse)); } return(JsonConvert.SerializeObject(account)); }
/** * Create Key from CreateApiKeyRequest */ public async Task <string> CreateKey(CreateApiKeyRequest createApiKeyRequest, string ipAddress) { var createApiResponse = new CreateApiResponse(); var createApiFailedResponse = new CreateApiResponseFailed(); var account = await this._accountRepository.GetAccountByLogin(createApiKeyRequest.login); //return failed if account is wrong if (account == null || account.Password != createApiKeyRequest.password) { createApiFailedResponse.Reason = Enum.GetName(typeof(CreateApiFailedEnum), CreateApiFailedEnum.FAILED); return(JsonConvert.SerializeObject(createApiFailedResponse)); } this._accountRepository.Entities().AddOrUpdate(account.Id, account, (i, editedAccount) => { //if expired token or empty if (account.ApiKeyExpirationDate == null || (DateTime)account.ApiKeyExpirationDate <= DateTime.Now) { editedAccount.ApiKey = Guid.NewGuid().ToString(); editedAccount.ApiKeyExpirationDate = DateTime.Now.AddHours(50);//4 } editedAccount.Ip = ipAddress; editedAccount.IsEdited = true; return(editedAccount); }); createApiResponse.AccountId = account.Id; createApiResponse.AddedDate = DateTimeOffset.Now; createApiResponse.Data = new CreateApiResponseData() { Country = "FR", Currency = "EUR" }; createApiResponse.Key = account.ApiKey; createApiResponse.ExpirationDate = DateTime.Now.AddHours(50);//4 createApiResponse.RefreshToken = ""; createApiResponse.Ip = account.Ip; return(JsonConvert.SerializeObject(createApiResponse)); }