diff --git a/TheBank/BankWebApi/Adapters/CreditProgramAdapter.cs b/TheBank/BankWebApi/Adapters/CreditProgramAdapter.cs
index e752285..3a638f2 100644
--- a/TheBank/BankWebApi/Adapters/CreditProgramAdapter.cs
+++ b/TheBank/BankWebApi/Adapters/CreditProgramAdapter.cs
@@ -54,7 +54,7 @@ public class CreditProgramAdapter : ICreditProgramAdapter
{
_logger.LogError(ex, "StorageException");
return CreditProgramOperationResponse.InternalServerError(
- $"Error while working with data storage:{ex.InnerException!.Message}"
+ $"Error while working with data storage:{ex.InnerException?.Message}"
);
}
catch (Exception ex)
@@ -86,7 +86,7 @@ public class CreditProgramAdapter : ICreditProgramAdapter
{
_logger.LogError(ex, "StorageException");
return CreditProgramOperationResponse.InternalServerError(
- $"Error while working with data storage: {ex.InnerException!.Message}"
+ $"Error while working with data storage: {ex.InnerException?.Message}"
);
}
catch (Exception ex)
@@ -122,7 +122,7 @@ public class CreditProgramAdapter : ICreditProgramAdapter
{
_logger.LogError(ex, "StorageException");
return CreditProgramOperationResponse.BadRequest(
- $"Error while working with data storage: {ex.InnerException!.Message}"
+ $"Error while working with data storage: {ex.InnerException?.Message}"
);
}
catch (Exception ex)
@@ -164,7 +164,7 @@ public class CreditProgramAdapter : ICreditProgramAdapter
{
_logger.LogError(ex, "StorageException");
return CreditProgramOperationResponse.BadRequest(
- $"Error while working with data storage: {ex.InnerException!.Message}"
+ $"Error while working with data storage: {ex.InnerException?.Message}"
);
}
catch (Exception ex)
@@ -195,7 +195,7 @@ public class CreditProgramAdapter : ICreditProgramAdapter
{
_logger.LogError(ex, "StorageException");
return CreditProgramOperationResponse.InternalServerError(
- $"Error while working with data storage:{ex.InnerException!.Message}"
+ $"Error while working with data storage:{ex.InnerException?.Message}"
);
}
catch (Exception ex)
@@ -226,7 +226,7 @@ public class CreditProgramAdapter : ICreditProgramAdapter
{
_logger.LogError(ex, "StorageException");
return CreditProgramOperationResponse.InternalServerError(
- $"Error while working with data storage:{ex.InnerException!.Message}"
+ $"Error while working with data storage:{ex.InnerException?.Message}"
);
}
catch (Exception ex)
diff --git a/TheBank/BankWebApi/Controllers/CreditProgramsController.cs b/TheBank/BankWebApi/Controllers/CreditProgramsController.cs
index 38beb88..ad417ec 100644
--- a/TheBank/BankWebApi/Controllers/CreditProgramsController.cs
+++ b/TheBank/BankWebApi/Controllers/CreditProgramsController.cs
@@ -63,6 +63,7 @@ public class CreditProgramsController(ICreditProgramAdapter adapter) : Controlle
/// модель от пользователя
///
[HttpPost]
+ [AllowAnonymous]
public IActionResult Register([FromBody] CreditProgramBindingModel model)
{
return _adapter.RegisterCreditProgram(model).GetResponse(Request, Response);
diff --git a/TheBank/BankWebApi/Program.cs b/TheBank/BankWebApi/Program.cs
index 6f7f794..ef05435 100644
--- a/TheBank/BankWebApi/Program.cs
+++ b/TheBank/BankWebApi/Program.cs
@@ -81,6 +81,15 @@ builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
};
});
+builder.Services.AddCors(options =>
+{
+ options.AddPolicy("AllowFrontend", policy =>
+ {
+ policy.WithOrigins("http://localhost:26312")
+ .AllowAnyMethod()
+ .AllowAnyHeader();
+ });
+});
// Learn more about configuring OpenAPI at https://aka.ms/aspnet/openapi
builder.Services.AddOpenApi();
builder.Services.AddSingleton();
@@ -135,7 +144,7 @@ if (app.Environment.IsProduction())
dbContext.Database.Migrate();
}
}
-
+app.UseCors("AllowFrontend");
app.UseHttpsRedirection();
app.UseAuthentication();
app.UseAuthorization();
diff --git a/TheBank/bankui/.env b/TheBank/bankui/.env
index b684ca7..69583ef 100644
--- a/TheBank/bankui/.env
+++ b/TheBank/bankui/.env
@@ -1 +1 @@
-VITE_API_URL=https://localhost:7204/
\ No newline at end of file
+VITE_API_URL=https://localhost:7204
\ No newline at end of file
diff --git a/TheBank/bankui/src/api/client.ts b/TheBank/bankui/src/api/client.ts
index db43c38..155525c 100644
--- a/TheBank/bankui/src/api/client.ts
+++ b/TheBank/bankui/src/api/client.ts
@@ -3,7 +3,11 @@ import { ConfigManager } from '@/lib/config';
const API_URL = ConfigManager.loadUrl();
export async function getData(path: string): Promise {
- const res = await fetch(`${API_URL}/${path}`);
+ const res = await fetch(`${API_URL}/${path}`, {
+ headers: {
+ mode: 'no-cors',
+ },
+ });
if (!res.ok) {
throw new Error(`Не получается загрузить ${path}: ${res.statusText}`);
}
@@ -16,6 +20,7 @@ export async function postData(path: string, data: T) {
method: 'POST',
headers: {
'Content-Type': 'application/json',
+ mode: 'no-cors',
},
body: JSON.stringify(data),
});
@@ -29,6 +34,7 @@ export async function putData(path: string, data: T) {
method: 'PUT',
headers: {
'Content-Type': 'application/json',
+ mode: 'no-cors',
},
body: JSON.stringify(data),
});
diff --git a/TheBank/bankui/src/components/features/CreditProgramForm.tsx b/TheBank/bankui/src/components/features/CreditProgramForm.tsx
index 0723124..f101a2f 100644
--- a/TheBank/bankui/src/components/features/CreditProgramForm.tsx
+++ b/TheBank/bankui/src/components/features/CreditProgramForm.tsx
@@ -25,19 +25,19 @@ import type {
} from '@/types/types';
const storekeepers: { id: string; name: string }[] = [
- { id: 'store1', name: 'Кладовщик 1' },
- { id: 'store2', name: 'Кладовщик 2' },
+ { id: crypto.randomUUID(), name: 'Кладовщик 1' },
+ { id: crypto.randomUUID(), name: 'Кладовщик 2' },
];
const periods: { id: string; name: string }[] = [
- { id: 'period1', name: 'Период 1' },
- { id: 'period2', name: 'Период 2' },
+ { id: crypto.randomUUID(), name: 'Период 1' },
+ { id: crypto.randomUUID(), name: 'Период 2' },
];
const currencies: CurrencyBindingModel[] = [
- { id: 'curr1', name: 'Доллар США', abbreviation: 'USD', cost: 1 },
- { id: 'curr2', name: 'Евро', abbreviation: 'EUR', cost: 1.2 },
- { id: 'curr3', name: 'Рубль', abbreviation: 'RUB', cost: 0.01 },
+ { id: crypto.randomUUID(), name: 'Доллар США', abbreviation: 'USD', cost: 1 },
+ { id: crypto.randomUUID(), name: 'Евро', abbreviation: 'EUR', cost: 1.2 },
+ { id: crypto.randomUUID(), name: 'Рубль', abbreviation: 'RUB', cost: 0.01 },
];
const formSchema = z.object({
@@ -77,8 +77,12 @@ export const CreditProgramForm = ({
});
const handleSubmit = (data: FormValues) => {
- const payload: CreditProgramBindingModel = {
+ const dataWithId = {
...data,
+ id: crypto.randomUUID(),
+ };
+ const payload: CreditProgramBindingModel = {
+ ...dataWithId,
currencyCreditPrograms: data.currencyCreditPrograms.map((currencyId) => ({
currencyId,
})),
diff --git a/TheBank/bankui/src/components/pages/CreditPrograms.tsx b/TheBank/bankui/src/components/pages/CreditPrograms.tsx
index 9cfe911..8f515dd 100644
--- a/TheBank/bankui/src/components/pages/CreditPrograms.tsx
+++ b/TheBank/bankui/src/components/pages/CreditPrograms.tsx
@@ -20,6 +20,7 @@ export const CreditPrograms = (): React.JSX.Element => {
const handleAdd = (data: CreditProgramBindingModel) => {
console.log(data);
+ createCreditProgram(data);
};
return (