summaryrefslogtreecommitdiff
path: root/packages/fcl-web/src/webdata/fpwebdata.pp
diff options
context:
space:
mode:
authormichael <michael@3ad0048d-3df7-0310-abae-a5850022a9f2>2010-07-14 14:33:41 +0000
committermichael <michael@3ad0048d-3df7-0310-abae-a5850022a9f2>2010-07-14 14:33:41 +0000
commit5179c3cbf9e9a4b9dd2efc847ab5a5192824752c (patch)
treed27c679eb7f20823f59366093ca577f69721cd34 /packages/fcl-web/src/webdata/fpwebdata.pp
parent118dcd10233058709e04a70921d07c317a6a6e12 (diff)
downloadfpc-5179c3cbf9e9a4b9dd2efc847ab5a5192824752c.tar.gz
* Actually implemented Options (readonly, disable edit/delete/insert
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@15568 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'packages/fcl-web/src/webdata/fpwebdata.pp')
-rw-r--r--packages/fcl-web/src/webdata/fpwebdata.pp25
1 files changed, 24 insertions, 1 deletions
diff --git a/packages/fcl-web/src/webdata/fpwebdata.pp b/packages/fcl-web/src/webdata/fpwebdata.pp
index ae68bfc788..604f62aaba 100644
--- a/packages/fcl-web/src/webdata/fpwebdata.pp
+++ b/packages/fcl-web/src/webdata/fpwebdata.pp
@@ -468,6 +468,8 @@ type
Property OnGetInputAdaptor;
Property OnGetProvider;
Property OnContent;
+ Property OnNewSession;
+ Property OnSessionExpired;
end;
Var
@@ -477,7 +479,7 @@ Function WebDataProviderManager : TFPCustomWebDataProviderManager;
implementation
-{ $define wmdebug}
+{$define wmdebug}
{$ifdef wmdebug}
uses dbugintf;
@@ -499,6 +501,11 @@ Resourcestring
SErrDuplicateHTTPDataProducer = 'Duplicate web data output content producer name: "%s"';
SErrUnknownInputAdaptor = 'Unknown web data input adaptor name: "%s"';
SErrUnknownHTTPDataProducer = 'Unknown web data output content producer name: "%s"';
+ SErrActionNotAllowed = 'Options of provider %s do not allow %s.';
+ SEditing = 'editing';
+ SDeleting = 'deleting';
+ SInserting = 'inserting';
+
{ TCustomWebdataInputAdaptor }
@@ -736,6 +743,8 @@ end;
procedure TFPCustomWebDataProvider.Update;
begin
{$ifdef wmdebug}SendDebug('TFPCustomWebDataProvider.Update enter');{$endif}
+ If ((Options * [wdpReadOnly,wdpDisableEdit])<>[]) then
+ Raise EFPHTTPError.CreateFmt(SErrActionNotAllowed,[Name,SEditing]);
CheckAdaptor;
DoUpdate;
{$ifdef wmdebug}SendDebug('TFPCustomWebDataProvider.Update leave');{$endif}
@@ -743,14 +752,22 @@ end;
procedure TFPCustomWebDataProvider.Delete;
begin
+ {$ifdef wmdebug}SendDebug('TFPCustomWebDataProvider.Delete enter');{$endif}
+ If ((Options * [wdpReadOnly,wdpDisableDelete])<>[]) then
+ Raise EFPHTTPError.CreateFmt(SErrActionNotAllowed,[Name,SDeleting]);
CheckAdaptor;
DoDelete;
+ {$ifdef wmdebug}SendDebug('TFPCustomWebDataProvider.Delete leave');{$endif}
end;
procedure TFPCustomWebDataProvider.Insert;
begin
+ {$ifdef wmdebug}SendDebug('TFPCustomWebDataProvider.Insert enter');{$endif}
+ If ((Options * [wdpReadOnly,wdpDisableInsert])<>[]) then
+ Raise EFPHTTPError.CreateFmt(SErrActionNotAllowed,[Name,SInserting]);
CheckAdaptor;
DoInsert;
+ {$ifdef wmdebug}SendDebug('TFPCustomWebDataProvider.Insert leave');{$endif}
end;
procedure TFPCustomWebDataProvider.ApplyParams;
@@ -1635,6 +1652,11 @@ begin
FRequest:=ARequest;
FResponse:=AResponse;
try
+ {$ifdef wmdebug}SendDebug('Checking session');{$endif}
+ CheckSession(ARequest);
+ {$ifdef wmdebug}SendDebug('Init session');{$endif}
+ InitSession(AResponse);
+ {$ifdef wmdebug}SendDebug('Getting providername');{$endif}
ProviderName:=Request.GetNextPathInfo;
{$ifdef wmdebug}SendDebug('Handlerequest, providername : '+Providername);{$endif}
AProvider:=GetProvider(ProviderName,AContainer);
@@ -1649,6 +1671,7 @@ begin
wdaInsert : InsertWebdata(AProvider);
wdaDelete : DeleteWebData(AProvider);
end;
+ UpdateSession(AResponse);
finally
If (AContainer=Nil) then
begin