FatFractal JavaScript SDKを使用しており、FFDLファイルでサーバー拡張機能を次のように宣言しています。
CREATE EXTENSION /ChangePassword AS javascript:require('scripts/UserAdministration').changePassword();
ユーザーがログインパスワードを変更できるようにするサーバー拡張機能を作成しています。/ChangePassword
クライアントアプリケーションから、ログインしたユーザーのユーザー名、現在の(古い)パスワード、および新しい目的のパスワードを含む単純なオブジェクトを渡したいと思います。上記のオブジェクトにデータを入力したとすると、A)クライアントアプリケーションのオブジェクトをサーバー拡張機能に渡し、B)サーバー拡張機能で渡されたオブジェクトのハンドルを取得し、C)確認オブジェクト(できれば)またはメッセージを返します。変更が完了したら、サーバー拡張機能からクライアントアプリケーションに移行しますか?
FFDL:
CREATE OBJECTTYPE ChangePasswordRequest (userName STRING, oldPassword STRING, newPassword STRING)
CREATE COLLECTION /ChangePasswordRequest OBJECTTYPE ChangePasswordRequest
クライアントアプリケーションのJSコード:
...
function ChangePassInfo() {
this.userName = null;
this.currentPassword = null;
this.newPassword = null;
return this;
}
...
function changePassword() {
var uname = ff.loggedInUser().userName;
var oldPass = $("#input-curr-pass").val();
var newPass = $("#input-new-pass").val();
var requestInfo = new ChangePassInfo();
requestInfo.userName = uname;
requestInfo.currentPassword = oldPass;
requestInfo.newPassword = newPass;
// pass 'requestInfo' to 'ChangePassword' extension
// acquire handle to confirmation object/message returned from 'ChangePassword'
...
}
サーバー拡張JSコード:
var ff = require('ffef/FatFractal');
...
function ChangePasswordRequest() {
this.clazz = 'ChangePasswordRequest';
this.createdBy = 'system';
this.userName = null;
this.oldPassword = null;
this.newPassword = null;
return this;
}
...
function changePassword() {
var changePassReq; // instance of a 'ChangePasswordRequest' object
// acquire handle to 'requestInfo' passed from client application to populate 'changePassReq'
...
// return a confirmation message or copy of 'changePassReq' to client application
}
...
exports.changePassword = changePassword;
コメントされたセクションは、私が解決しようとしている問題領域です。これらが解決されたら、残りの実装を入力できるようになります。ありがとう!