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
29extern "C" {
30#endif
31
32typedef 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*/
45typedef 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*/
53SAL_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*/
66SAL_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*/
84SAL_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*/
95SAL_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*/
102SAL_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*/
110SAL_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*/
118SAL_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*/
126SAL_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*/
134SAL_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
144SAL_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
154SAL_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