1 | /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ |
2 | /* |
3 | * This file is part of the LibreOffice project. |
4 | * |
5 | * This Source Code Form is subject to the terms of the Mozilla Public |
6 | * License, v. 2.0. If a copy of the MPL was not distributed with this |
7 | * file, You can obtain one at http://mozilla.org/MPL/2.0/. |
8 | * |
9 | * This file incorporates work covered by the following license notice: |
10 | * |
11 | * Licensed to the Apache Software Foundation (ASF) under one or more |
12 | * contributor license agreements. See the NOTICE file distributed |
13 | * with this work for additional information regarding copyright |
14 | * ownership. The ASF licenses this file to you under the Apache |
15 | * License, Version 2.0 (the "License"); you may not use this file |
16 | * except in compliance with the License. You may obtain a copy of |
17 | * the License at http://www.apache.org/licenses/LICENSE-2.0 . |
18 | */ |
19 | |
20 | #ifndef INCLUDED_OSL_SECURITY_H |
21 | #define INCLUDED_OSL_SECURITY_H |
22 | |
23 | #include <sal/config.h> |
24 | |
25 | #include <rtl/ustring.h> |
26 | #include <sal/saldllapi.h> |
27 | |
28 | #ifdef __cplusplus |
29 | extern "C" { |
30 | #endif |
31 | |
32 | typedef enum { |
33 | osl_Security_E_None, |
34 | osl_Security_E_UserUnknown, |
35 | osl_Security_E_WrongPassword, |
36 | osl_Security_E_Unknown, |
37 | osl_Security_E_FORCE_EQUAL_SIZE = SAL_MAX_ENUM |
38 | } oslSecurityError; |
39 | |
40 | /** Process handle |
41 | @see osl_loginUser |
42 | @see osl_freeSecurityHandle |
43 | @see osl_executeProcess |
44 | */ |
45 | typedef void* oslSecurity; |
46 | |
47 | /** Create a security handle for the current user. |
48 | @return a security handle or NULL on failure. |
49 | @see osl_freeSecurityHandle |
50 | @see osl_executeProcess |
51 | @see osl_executeApplication |
52 | */ |
53 | SAL_DLLPUBLIC oslSecurity SAL_CALL osl_getCurrentSecurity(void); |
54 | |
55 | /** Deprecated API |
56 | Create a security handle for the denoted user. |
57 | Try to log in the user on the local system. |
58 | @param[in] strUserName denotes the name of the user to logg in. |
59 | @param[in] strPasswd the password for this user. |
60 | @param[out] pSecurity returns the security handle if user could be logged in. |
61 | @return osl_Security_E_None if user could be logged in, otherwise an error-code. |
62 | @see osl_freeSecurityHandle |
63 | @see osl_executeProcess |
64 | @see osl_executeApplication |
65 | */ |
66 | SAL_DLLPUBLIC oslSecurityError SAL_CALL osl_loginUser( |
67 | rtl_uString *strUserName, |
68 | rtl_uString *strPasswd, |
69 | oslSecurity *pSecurity |
70 | ); |
71 | |
72 | /** Create a security handle for the denoted user. |
73 | Try to log in the user on the denoted file server. On success the homedir will be |
74 | the maped drive on this server. |
75 | @param[in] strUserName denotes the name of the user to logg in. |
76 | @param[in] strPasswd the password for this user. |
77 | @param[in] strFileServer denotes the file server on which the user is logged in. |
78 | @param[out] pSecurity returns the security handle if user could be logged in. |
79 | @return osl_Security_E_None if user could be logged in, otherwise an error-code. |
80 | @see osl_freeSecurityHandle |
81 | @see osl_executeProcess |
82 | @see osl_executeApplication |
83 | */ |
84 | SAL_DLLPUBLIC oslSecurityError SAL_CALL osl_loginUserOnFileServer( |
85 | rtl_uString *strUserName, |
86 | rtl_uString *strPasswd, |
87 | rtl_uString *strFileServer, |
88 | oslSecurity *pSecurity |
89 | ); |
90 | |
91 | /** Query if the user who is denotes by this security has administrator rights. |
92 | @param[in] Security the security handle for th user. |
93 | @return True, if the user has adminsitrator rights, otherwise false. |
94 | */ |
95 | SAL_DLLPUBLIC sal_Bool SAL_CALL osl_isAdministrator( |
96 | oslSecurity Security); |
97 | |
98 | /** Free the security handle, created by osl_loginUser or osl_getCurrentSecurity. |
99 | @param[in] Security the security handle. |
100 | @see osl_loginUser |
101 | */ |
102 | SAL_DLLPUBLIC void SAL_CALL osl_freeSecurityHandle( |
103 | oslSecurity Security); |
104 | |
105 | /** Get the login ident for the user of this security handle. |
106 | @param[in] Security the security handle. |
107 | @param[out] strIdent the string that receives the ident on success. |
108 | @return True, if the security handle is valid, otherwise False. |
109 | */ |
110 | SAL_DLLPUBLIC sal_Bool SAL_CALL osl_getUserIdent( |
111 | oslSecurity Security, rtl_uString **strIdent); |
112 | |
113 | /** Get the login name for the user of this security handle. |
114 | @param[in] Security the security handle. |
115 | @param[out] strName the string that receives the user name on success. |
116 | @return True, if the security handle is valid, otherwise False. |
117 | */ |
118 | SAL_DLLPUBLIC sal_Bool SAL_CALL osl_getUserName( |
119 | oslSecurity Security, rtl_uString **strName); |
120 | |
121 | /** Get the home directory of the user of this security handle. |
122 | @param[in] Security the security handle. |
123 | @param[out] strDirectory the string that receives the directory path on success. |
124 | @return True, if the security handle is valid, otherwise False. |
125 | */ |
126 | SAL_DLLPUBLIC sal_Bool SAL_CALL osl_getHomeDir( |
127 | oslSecurity Security, rtl_uString **strDirectory); |
128 | |
129 | /** Get the directory for configuration data of the user of this security handle. |
130 | @param[in] Security the security handle. |
131 | @param[out] strDirectory the string that receives the directory path on success. |
132 | @return True, if the security handle is valid, otherwise False. |
133 | */ |
134 | SAL_DLLPUBLIC sal_Bool SAL_CALL osl_getConfigDir( |
135 | oslSecurity Security, rtl_uString **strDirectory); |
136 | |
137 | |
138 | /** Load Profile of the User |
139 | Implemented just for Windows |
140 | @param[in] Security previously fetch Security of the User |
141 | @return True if the Profile could successfully loaded, False otherwise. |
142 | */ |
143 | |
144 | SAL_DLLPUBLIC sal_Bool SAL_CALL osl_loadUserProfile( |
145 | oslSecurity Security); |
146 | |
147 | |
148 | /** Unload a User Profile |
149 | Implemented just for Windows |
150 | @param[in] Security previously fetch Security of the User |
151 | @return nothing is returned! |
152 | */ |
153 | |
154 | SAL_DLLPUBLIC void SAL_CALL osl_unloadUserProfile( |
155 | oslSecurity Security); |
156 | |
157 | #ifdef __cplusplus |
158 | } |
159 | #endif |
160 | |
161 | #endif // INCLUDED_OSL_SECURITY_H |
162 | |
163 | /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |
164 | |