Revision 95f0eec3

b/docs/source/webclient.rst
15 15

  
16 16
Build instructions
17 17
------------------
18
prerequisites: git, jdk 1.6, ant
19

  
20
First get the source from the git repository
21

  
22
git clone https://code.grnet.gr/git/pithos-web-client
23

  
24
cd pithos-web-client
25

  
26
Edit the file runtime.properties and set the loginUrl and cloudbar properties to the correct values eg.
27

  
28
loginUrl=https://accounts.staging.okeanos.grnet.gr/im/login?next=https%3A//pithos.staging.okeanos.grnet.gr/ui
29

  
30
CLOUDBAR_ACTIVE_SERVICE = cloud;
31

  
32
CLOUDBAR_LOCATION = https://accounts.staging.okeanos.grnet.gr/static/im/cloudbar/
33

  
34
CLOUDBAR_SERVICES = https://accounts.staging.okeanos.grnet.gr/im/get_services
35

  
36
CLOUDBAR_MENU = https://accounts.staging.okeanos.grnet.gr/im/get_menu
37

  
38
Then run ant
39

  
40
ant
41

  
42
cd bin/www/gr.grnet.pithos.web.Pithos
43

  
44
This folder contains the "binaries" (html and javascript actually). Those files should be put somewhere to be served by the web server.
45
For deploying to pithos.dev.grnet.gr, upload everything to /var/www/pithos_web_client where they are served under /ui.
46

  
47
Important reminder: Due to Same-Origin-Policy the web client should be served under the same domain as the API.
18 48

  
19 49
Technology and tools
20 50
--------------------
51
Pithos+ web client is a gwt application. It is written in Java and compiled to javascript that runs in the browser.
21 52

  
22 53
General architecture
23 54
--------------------
......
25 56
Authentication
26 57
--------------
27 58

  
59
Authentication is provided by an external service. Upon loading the web client checks for the existence of the authentication cookie named '_pithos2_a'. If the cookie is present then it is parsed for the username and authentication token. The format of the cookie content is
60

  
61
username|token
62

  
63
These username and token are used for every request to the server. If at any time, the client receives an HTTP 401 (Unauthorized) which means that the token has expired, then the user is informed and redirected to the login page.
64

  
65
If the auth cookie is not present in the first place then the user is immediately redirected to the login page.
66

  
67
The login page url is defined in the runtime.properties file and it must end with a 'next=' url parameter. The value of the parameter will be determined automatically. If the parameter is not present then the login page will not be able to redirect back to the client after a successful login and the use will end up at her profile page.
68

  
28 69
API Usage
29 70
---------
30 71

  
31 72
Initialization
32 73
^^^^^^^^^^^^^^
74
Upon loading, the web client performs the followinf steps:
75

  
76
Ckeck if the user is authenticated (auth cookie present)
77

  
78
The application page is constructed
79

  
80
Requests the server for the user account and files. This is done in various stages. First a request is made for the user account data
81

  
82
GET /v1/username?format=json
83

  
84
If there is a container named 'pithos' and a container named 'trash' then it proceeds to the folder tree construction. Otherwise the missing containers will be created with a request
85

  
86
PUT /v1/username/pithos
87

  
88
PUT /v1/username/trash
33 89

  
34 90
Constructing the folder tree
35 91
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
36 92

  
93

  
37 94
Constructing the My Shared tree
38 95
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
39 96

  

Also available in: Unified diff