mirror of
https://github.com/danieleteti/delphimvcframework.git
synced 2024-11-16 00:05:53 +01:00
70c1e55e94
New Unit Tests for Compression in TRESTClient Updated RQL Parser and compilers New EntitiesGenerator (alpha) Improved unittests Updated landing page
111 lines
2.9 KiB
ObjectPascal
111 lines
2.9 KiB
ObjectPascal
unit WebModuleU;
|
|
|
|
interface
|
|
|
|
uses
|
|
System.SysUtils,
|
|
System.Classes,
|
|
Web.HTTPApp,
|
|
MVCFramework,
|
|
FireDAC.Stan.Intf,
|
|
FireDAC.Stan.Option,
|
|
FireDAC.Stan.Error,
|
|
FireDAC.UI.Intf,
|
|
FireDAC.Phys.Intf,
|
|
FireDAC.Stan.Def,
|
|
FireDAC.Stan.Pool,
|
|
FireDAC.Stan.Async,
|
|
FireDAC.Phys,
|
|
FireDAC.Phys.MySQL,
|
|
FireDAC.Phys.MySQLDef,
|
|
FireDAC.VCLUI.Wait,
|
|
Data.DB,
|
|
FireDAC.Comp.Client,
|
|
FireDAC.Stan.Param,
|
|
FireDAC.DatS,
|
|
FireDAC.DApt.Intf,
|
|
FireDAC.DApt,
|
|
FireDAC.Comp.DataSet;
|
|
|
|
type
|
|
TMyWebModule = class(TWebModule)
|
|
FDQuery1: TFDQuery;
|
|
FDConnection1: TFDConnection;
|
|
procedure WebModuleCreate(Sender: TObject);
|
|
procedure WebModuleDestroy(Sender: TObject);
|
|
private
|
|
FMVC: TMVCEngine;
|
|
public
|
|
{ Public declarations }
|
|
end;
|
|
|
|
var
|
|
WebModuleClass: TComponentClass = TMyWebModule;
|
|
ConnectionDefinitionName: string = '';
|
|
|
|
implementation
|
|
|
|
{$R *.dfm}
|
|
|
|
|
|
uses
|
|
System.IOUtils,
|
|
MVCFramework.Commons,
|
|
MVCFramework.ActiveRecordController,
|
|
MVCFramework.ActiveRecord,
|
|
FDConnectionConfigU;
|
|
|
|
procedure TMyWebModule.WebModuleCreate(Sender: TObject);
|
|
begin
|
|
FMVC := TMVCEngine.Create(Self,
|
|
procedure(Config: TMVCConfig)
|
|
begin
|
|
// enable static files
|
|
Config[TMVCConfigKey.DocumentRoot] := TPath.Combine(ExtractFilePath(GetModuleName(HInstance)), 'www');
|
|
// session timeout (0 means session cookie)
|
|
Config[TMVCConfigKey.SessionTimeout] := '0';
|
|
// default content-type
|
|
Config[TMVCConfigKey.DefaultContentType] := TMVCConstants.DEFAULT_CONTENT_TYPE;
|
|
// default content charset
|
|
Config[TMVCConfigKey.DefaultContentCharset] := TMVCConstants.DEFAULT_CONTENT_CHARSET;
|
|
// unhandled actions are permitted?
|
|
Config[TMVCConfigKey.AllowUnhandledAction] := 'false';
|
|
// default view file extension
|
|
Config[TMVCConfigKey.DefaultViewFileExtension] := 'html';
|
|
// view path
|
|
Config[TMVCConfigKey.ViewPath] := 'templates';
|
|
// Enable Server Signature in response
|
|
Config[TMVCConfigKey.ExposeServerSignature] := 'true';
|
|
// Define a default URL for requests that don't map to a route or a file (useful for client side web app)
|
|
Config[TMVCConfigKey.FallbackResource] := 'index.html';
|
|
end);
|
|
FMVC.AddController(TMVCActiveRecordController,
|
|
function: TMVCController
|
|
begin
|
|
Result := TMVCActiveRecordController.Create(
|
|
function: TFDConnection
|
|
begin
|
|
Result := TFDConnection.Create(nil);
|
|
Result.ConnectionDefName := ConnectionDefinitionName;
|
|
end,
|
|
function(aContext: TWebContext; aClass: TMVCActiveRecordClass; aAction: TMVCActiveRecordAction): Boolean
|
|
begin
|
|
if aContext.LoggedUser.IsValid then
|
|
begin
|
|
Result := True;
|
|
end
|
|
else
|
|
begin
|
|
Result := True; // not(aAction in [TMVCActiveRecordAction.Delete]);
|
|
end;
|
|
end);
|
|
end, '/api/entities');
|
|
end;
|
|
|
|
procedure TMyWebModule.WebModuleDestroy(Sender: TObject);
|
|
begin
|
|
FMVC.Free;
|
|
end;
|
|
|
|
end.
|